【问题标题】:Thymeleaf display element as active when using layoutThymeleaf 显示元素在使用布局时处于活动状态
【发布时间】:2019-04-22 17:48:56
【问题描述】:

我想在单击该元素时将导航元素显示为活动的(导航项活动类),而其他元素具有非活动类(导航项)。我也在使用 Thymeleaf 布局。

在控制器中我有以下代码

    @GetMapping("/login")
public String getLoginPage(Model model) {
    model.addAttribute("activeLink", "Login");
    return "login";
}

在 layout.html 文件中(该文件包含所有页面的通用页眉和页脚),我有以下代码

    <nav th:replace="navigation.html :: navibar(activeLink=${activeLink})"></nav>

在navigation.html(这个文件只有导航相关的代码),我有类似的代码

<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top" th:fragment="navibar(activeLink)">
<a class="navbar-brand" href="/title">Title</a>

<div class="collapse navbar-collapse" id="navbarsExampleDefault">
    <ul class="navbar-nav mr-auto">
        <li th:class="${#strings.equals(activeLink, 'Home')} ? 'nav-item active' : 'nav-item'"><a class="nav-link" href="/">Home<span class="sr-only">(current)</span></a></li>
        <li th:class="${#strings.equals(activeLink, 'Register')} ? 'nav-item active' : 'nav-item'"><a class="nav-link" href="/register">Register</a></li>
        <li th:class="${#strings.equals(activeLink, 'Login')} ? 'nav-item active' : 'nav-item'" sec:authorize="isAnonymous()"><a class="nav-link" th:href="@{/login}">Login <span class="sr-only">(current)</span></a></li>
        <li class="nav-item active" sec:authorize="isAuthenticated()"><a class="nav-link" th:href="@{/logout}">Logout <span class="sr-only">(current)</span></a></li>
    </ul>
</div>

在控制器(登录)返回的模板中,我没有任何导航链接特定的代码。

上面的代码可以运行,但是有没有更好更简单的方法来激活导航项? 另外,如果我使用 flash 属性

redirectAttributes.addFlashAttribute("activeLink", "Register");

在控制器中,则功能不起作用

【问题讨论】:

  • 您可以传递包含导航模板的 activeLink。那么你就不必将它添加到模型中
  • 这是一个不错的选择,谢谢。我可以在每个模板中添加一个布局片段,它会调用 nagivation.html :: navibar()。这样可以避免通过控制器
  • 是的。如果您不介意,我会将其添加为答案。

标签: spring spring-boot thymeleaf navigationbar


【解决方案1】:

为避免将 activeLink 添加到模型中,您可以在包含片段时传递 activeLink。

喜欢:

<div th:replace="nagivation :: navibar('Login')"></div>

顺便说一句。您可以删除布局名称后的 .html。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-05
    • 2011-05-04
    • 1970-01-01
    • 2021-06-06
    • 2016-11-07
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多