我的其中一个 thymeleaf 模板中有一些导航。
<li class="active"><a th:href="@{/}">Home</a></li>
<li class=""><a th:href="@{/about}">About</a></li>
<li class=""><a th:href="@{/contact}">Contact</a></li>
我想要做的是设置我们所在的当前导航项的事件类。来自 grails 世界,我们可以很容易地做到这一点,因为在 GSP 中有两个非常重要的变量可供我们使用。
${controllerName}
${actionName}
现在我知道我可以在 Spring MVC Controller 中手动设置这些变量并将它们传递给 View ,但这似乎不是一个好的解决方案。
@Controller
@RequestMapping("/about")
public class AboutController {
@RequestMapping("/")
public String home(Model model) {
model.addAttribute("controllerName", "about");
model.addAttribute("actionName", "home");
return "about/home";
}
}
还有其他方法可以做到这一点吗?
最佳答案
我使用页面模板本身中设置的变量写出了不同的解决方案。
看这里:Is it possible to pass parameters to layout in thymeleaf layout-dialect?
我的 home.html
文件将等同于您的 about/home
模板。我设置了一个变量( currentPage
)使其可用于所有其他包含。
它仍然是一种手动方法,如我的 fragments/header.html
中所见文件,但至少所有这些逻辑都保留在模板方面。
您可以为此争论任何一种情况,因为 Controller 决定为每个页面使用哪个模板。但这是一个简单的解决方案,您不必为了跟踪要突出显示的导航元素而不断将这些数据添加到您的模型中。
关于spring - Thymeleaf 和 Spring MVC 当前 Controller 和 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790317/