【发布时间】:2016-04-19 19:43:45
【问题描述】:
我的一个百里香模板中有一些导航。
<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
@RequestMapping("/about")
public class AboutController {
@RequestMapping("/")
public String home(Model model) {
model.addAttribute("controllerName", "about");
model.addAttribute("actionName", "home");
return "about/home";
}
}
还有其他方法吗?
【问题讨论】:
-
这里描述了我知道的不是基于自定义变量的唯一方法:stackoverflow.com/questions/10852131/…。但这仍然是一种手动方式。
-
我就是这么想的。我正在使用这样的东西,但我只是在检查是否有更简单的方法。我可能会尝试创建一个基本拦截器并为每个请求添加 2 个变量。
-
好吧,恐怕在 Grails 中没有类似的东西。此外,我不确定
<li class="dropdown" th:class="${#httpServletRequest.requestURI.contains('/admin/')} ? 'dropdown active' : 'dropdown'>是否比简单地使用一些自定义模型属性更清晰。但这只是一种意见。
标签: spring spring-mvc spring-boot thymeleaf