Spring Boot 菜单组件控制器

Ja'*_*daf 4 java spring spring-boot

我想知道如何创建一个在每个页面上动态加载(从数据库)的菜单。

我使用 Spring Boot + thymeleaf。没有 XML,只有 spring 注释。

我尝试添加一个控制器,其方法返回一个用 (@ModelAttribute) 注释的类别对象(在菜单中使用),但我无法在 HTML 页面中使用该属性。这是我的标题:

<ul>
<li th:each="category : ${categories}" th:text="${category.name}">
</ul>
Run Code Online (Sandbox Code Playgroud)

现在,这个“ul”会加载到每个页面中,因为它位于菜单栏上。我不想在每个控制器中添加以下代码:

ModelAndView mav = new ModelAndView("index");
mav.addObject("categories", getCategories());
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来实现这一点,而无需在每个控制器上添加此代码。就一次。

谢谢

Ily*_*ich 5

您可以使用@ControllerAdvice,为每个控制器响应添加“类别”属性。由于它是一个 spring 组件,因此您可以自动装配其中的任何现有服务来检索类别。

@ControllerAdvice
public class CategoriesAdvice {

    @ModelAttribute
    public void addAttributes(Model model) {
        model.addAttribute("categories", getCategories());
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅我的 github 项目以及完整的解决方案:project