如何在百里香叶碎片中重复弹簧模型



我有一个Spring + Thymeleaf项目。我有一个标题部分的片段和一些包含标题的页面。

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

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>

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

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

问题是,在我需要此标头的每个视图的每个控制器中,我必须为activeUserWorkgroup模型对象提供适当的值。这既不舒服又容易出错。

有没有办法让 Spring 为activeUserWorkgroup对象提供正确的模型值,而不必在每个控制器中编写代码?

谢谢

这可能是你要找的。我要做的是创建仅返回模型对象activeUseWorkgroup的控制器。然后让所有其他控制器扩展它。

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

最好创建一个控制器建议,阅读此链接中的文档 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
    }
}

最新更新