spring - Thymeleaf 和 Spring MVC 当前 Controller 和 Action

标签 spring spring-mvc spring-boot thymeleaf

我的其中一个 thymeleaf 模板中有一些导航。

<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 中手动设置这些变量并将它们传递给 View ,但这似乎不是一个好的解决方案。
@Controller
@RequestMapping("/about")
public class AboutController {

    @RequestMapping("/")
    public String home(Model model) {
        model.addAttribute("controllerName", "about");
        model.addAttribute("actionName", "home");        
        return "about/home";        
    }

}

还有其他方法可以做到这一点吗?

最佳答案

我使用页面模板本身中设置的变量写出了不同的解决方案。

看这里:Is it possible to pass parameters to layout in thymeleaf layout-dialect?

我的 home.html文件将等同于您的 about/home模板。我设置了一个变量( currentPage )使其可用于所有其他包含。

它仍然是一种手动方法,如我的 fragments/header.html 中所见文件,但至少所有这些逻辑都保留在模板方面。

您可以为此争论任何一种情况,因为 Controller 决定为每个页面使用哪个模板。但这是一个简单的解决方案,您不必为了跟踪要突出显示的导航元素而不断将这些数据添加到您的模型中。

关于spring - Thymeleaf 和 Spring MVC 当前 Controller 和 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34790317/

相关文章:

eclipse - Spring Boot Gradle设置

java - Gradle 依赖排除后依赖仍然在类路径上

java - 在 Spring MVC 应用程序中启用 Spring Security

java - spring-security & spring-mvc 配置

java - 如何使用 <sec :authorize access ="hasRole(' ROLES)"> for checking multiple Roles?

spring-boot - 在配置中定义类型为 'com.netflix.discovery.AbstractDiscoveryClientOptionalArgs' 的 bean

java - 从 Spring Boot 1.5.4 升级到 2.0.0 的问题

java - Spring Boot API 自定义错误响应契约

java - Spring Data 中 IQueryable 的等价物

java - Flyway-maven-plugin 如何从 spring boot application.yml 中读取设置