У меня есть фрагмент тимелефа под названием nav, который я включаю на все страницы интерфейса, он выглядит так:
<nav class = "navbar navbar-expand-md navbar-dark bg-dark" th:fragment = "nav">
<div class = "collapse navbar-collapse" id = "navbarsExampleDefault">
<ul class = "navbar-nav mr-auto">
<li class = "nav-item active">
<a class = "nav-link" href = "#">Home <span class = "sr-only">(current)</span></a>
</li>
How to get Java data here ?
</ul>
</div>
</nav>
Но сейчас я хочу получить некоторые данные из базы данных и сделать эти данные доступными в этом фрагменте, который, в свою очередь, будет отображаться на каждой странице, содержащей этот фрагмент.
Если я хочу регулярно передавать данные в представление из контроллера, я бы использовал Model и model.addAttribute и возвращал соответствующее представление, которое содержало бы соответствующие данные модели, но как я могу передать данные в этот фрагмент?




Вы можете создать перехватчик и добавить атрибут модели в метод postHandle (который позволяет вам получить доступ к объекту ModelAndView. Перехватчик должен быть на всех контроллерах, у которых есть этот фрагмент.
Вы можете добавить соответствующие атрибуты модели в сеанс и получить к ним доступ через ${session.attribute}.
Используйте аннотацию @ControllerAdvice в сочетании с @ModelAttribute, чтобы добавить атрибут модели ко всем контроллерам.
Есть многоизПримеры. Похоже, вы также можете использовать @ControllerAdvice в сочетании с @ModelAttribute..
@ControllerAdvice, похоже, работает, я приму этот ответ, потому что по подсказке
Можете ли вы привести несколько примеров? Кроме того, как я могу установить сеанс без какого-либо конкретного URL-адреса/запроса? Должен ли я сделать это в каком-нибудь контроллере или в файле
WebConfig.java, который был бы идеальным ИМО. Когда я говорю «пример», я имею в виду что-то простое,String name = "john"гдеnameдоступно во всем приложении.