基于上下文数据显示活动导航

我在Thymeleaf模板中有以下分隔的片段。

 

我想在主动导航元素中添加一个“主动”类 – 但在Thymyleaf中似乎很难实现。 有什么建议么?

您可以在控制器中为每个页面添加一个ModelAttribute ,其值为active ,例如:

SettingsController.java

 @RequestMapping("/settings") public String viewSettings(Model model) { // do stuff model.addAttribute("classActiveSettings","active"); return "settings"; } 

或者在SettingsControllerAdvice.java中

 @ControllerAdvice(assignableTypes = SettingsController.class) public class SettingsControllerAdvice { @ModelAttribute("classActiveSettings") public String cssActivePage() { return "active"; } } 

然后,在settings.html中包含的导航片段中:

  

最后,您可以为导航栏中的每个控制器和链接重复此过程。

你可以这样做:

  

虽然我认为它是丑陋的解决方案,但遗憾的是百里香叶没有一些宏,你可以使用:

 
  • Hotel
  • 它也适用于像“ hotels / new”这样的“更深层次”链接,因此它也适用于多级菜单。

    虽然这是一个老问题,我想分享这个解决方案,因为它可以更优雅!

    http://nixmash.com/post/bootstrap-navbar-highlighting-in-thymeleaf

    • 将参数(activeTab)添加到导航片段。
     
    • 在使用导航栏片段的主页面中传递它的值
      
    • 在’li’元素中检查它以设置’active’类
      
  • About
  • 对于使用Thymeleaf 3的人:

     Home 

    如果您的应用程序有上下文路径:

     Home 

    编辑:

    简明扼要:

     Home 

    使用request.getServletPath()的好处是它忽略了上下文路径(如果有的话)。