Делитесь данными через фрагмент тимелеафа

У меня есть фрагмент тимелефа под названием 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 и возвращал соответствующее представление, которое содержало бы соответствующие данные модели, но как я могу передать данные в этот фрагмент?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
411
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
  1. Вы можете создать перехватчик и добавить атрибут модели в метод postHandle (который позволяет вам получить доступ к объекту ModelAndView. Перехватчик должен быть на всех контроллерах, у которых есть этот фрагмент.

  2. Вы можете добавить соответствующие атрибуты модели в сеанс и получить к ним доступ через ${session.attribute}.

  3. Используйте аннотацию @ControllerAdvice в сочетании с @ModelAttribute, чтобы добавить атрибут модели ко всем контроллерам.

Можете ли вы привести несколько примеров? Кроме того, как я могу установить сеанс без какого-либо конкретного URL-адреса/запроса? Должен ли я сделать это в каком-нибудь контроллере или в файле WebConfig.java, который был бы идеальным ИМО. Когда я говорю «пример», я имею в виду что-то простое, String name = "john" где name доступно во всем приложении.

jukenduit 18.04.2019 21:04

Есть многоизПримеры. Похоже, вы также можете использовать @ControllerAdvice в сочетании с @ModelAttribute..

Metroids 18.04.2019 21:23

@ControllerAdvice, похоже, работает, я приму этот ответ, потому что по подсказке

jukenduit 18.04.2019 21:52

Другие вопросы по теме