如何在 Thymeleaf 片段中重复 Spring 模型

How to repeat a Spring model in a Thymeleaf fragment

我有一个 Spring + Thymeleaf 项目。我有 header 部分的片段和一些包含 header.

的页面

下面是 header 片段的(重要部分)。如您所见,它包括 activeUserWorkgroup 模型 object

dashboard-header.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:th="http://www.thymeleaf.org">

<body>
    <header th:fragment="dashboard-header" class="header">
    ....
            <div class="navbar-right">
                <ul class="nav navbar-nav">

                    <li class="dropdown notifications-menu">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
                            <span class="user-label" style="margin-left:5px;" 
                                  th:text="${activeUserWorkgroup.getWorkgroupLabel()}">
                            </span>
                        </a>

                    </li>
                </ul>
            </div>
        </nav>
    </header>
</body>

</html>

在我需要 header 片段的每个 Spring 视图中,我添加了行

<div th:replace="fragments/dashboard-header :: dashboard-header"></div>

问题是,在我需要这个 header 的每个视图的每个控制器中,我必须为 activeUserWorkgroup 模型 object 提供正确的值。这既不舒服又容易出错。

有什么方法可以让 Spring 为 activeUserWorkgroup object 提供正确的模型值,而不必在每个控制器中编写代码?

谢谢

这可能是您要查找的内容。我要做的是创建 return 只是模型对象 activeUseWorkgroup 的控制器。然后让所有其他控制器扩展它。

@Controller
public ControllerA
{
     @ModelAttribute("activeUserWorkgroup")
     public Object getActiveUserWorkgroup()
     {
         return new Object();
     }
}

@Controller
public ControllerB extends ControllerA
{
}

创建一个 ControllerAdvice 可能更好,请阅读此处的文档 link http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ControllerAdvice.html

@ControllerAdvice
public class GlobalControllerAdvice extends ResponseEntityExceptionHandler {

    @ModelAttribute("activeUserWorkgroup ")
    public String getActiveWorkgroup() {    
       //YOUR CODE
    }

}