Я хотел, чтобы элемент навигации отображался как активный (класс nav-item active), когда по этому элементу щелкают другие элементы с неактивным классом (nav-item).Я также использую макеты 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>
В возвращенном шаблонепо контроллеру (логин), у меня нет каких-либо специальных ссылок для навигационных ссылок.
Приведенный выше код работает, но есть ли более простой способ для активных элементов навигации?Кроме того, если я использую флэш-атрибуты
redirectAttributes.addFlashAttribute("activeLink", "Register");
в контроллере, то функциональность не работает