我有一些导航在我的胸腺叶模板之一。
<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}
现在我知道我可以在SpringMVC控制器中手动设置这些变量并将它们传递给视图,但这似乎不是一个好的解决方案。
@Controller
@RequestMapping("/about")
public class AboutController {
@RequestMapping("/")
public String home(Model model) {
model.addAttribute("controllerName", "about");
model.addAttribute("actionName", "home");
return "about/home";
}
}
还有别的办法吗?
我使用页面模板本身中设置的变量编写了一个不同的解决方案。
看这里:是否可以在thymeleaf布局-方言中向布局传递参数?
我的home. html
文件相当于您的about/home
模板。我设置了一个变量(当前页面
),使其可用于所有其他包含。
它仍然是一个手动方法,如我的片段/header. html
文件所示,但至少所有逻辑都保留在模板端。
你可以为这两种情况争论,因为控制器决定每个页面使用哪个模板。但这是一个简单的解决方案,你不必为了跟踪要突出显示的导航元素而不断将这些数据添加到模型中。