Есть ли способ предоставить атрибут всем моделям в Spring?

Thymeleaf удалил шаблонные выражения, такие как #session, #httpServletRequest и т. д., в версии 3.1 (https://www.thymeleaf.org/doc/articles/thymeleaf31whatsnew.html).

Мы часто использовали их в относительно больших приложениях. Я написал перехватчик для заполнения этих атрибутов при каждом запросе, поскольку я не хочу добавлять их в каждый необходимый контроллер (как описано в руководстве по миграции).

Кто-нибудь знает лучший способ добиться этого?

Как сделать движок для футбольного матча? (простой вариант)
Как сделать движок для футбольного матча? (простой вариант)
Футбол. Для многих людей, живущих на земле, эта игра - больше, чем просто спорт. И эти люди всегда мечтают стать футболистом или менеджером. Но, к...
Знайте свои исключения!
Знайте свои исключения!
В Java исключение - это событие, возникающее во время выполнения программы, которое нарушает нормальный ход выполнения инструкций программы. Когда...
Лучшая компания по разработке спортивных приложений
Лучшая компания по разработке спортивных приложений
Ищете лучшую компанию по разработке спортивных приложений? Этот список, несомненно, облегчит вашу работу!
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Фото ️🔁 Radek Jedynak 🔃 on ️🔁 Unsplash 🔃
Что такое Java 8 Streams API? Java 8 Stream API
Деревья поиска (Алгоритм4 Заметки к учебнику)
Деревья поиска (Алгоритм4 Заметки к учебнику)
(1) Двоичные деревья поиска: среднее lgN, наихудшее N для вставки и поиска.
3
0
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это уже лучший метод для заполнения атрибутов при каждом запросе по сравнению с более ранними методами, определенными в документации Spring Framework.

Ответ принят как подходящий

Я узнал, что в этом случае можно использовать @ControllerAdvice (см. https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc).

Классы, аннотированные @ControllerAdvice, могут иметь методы, аннотированные @ModelAttribute, для заполнения атрибутов нескольких контроллеров (всех, если не указано иное).

В моем случае:

@ControllerAdvice
public class CommonDataAdvice {
     @Autowired
     private HttpServletRequest request;

     @ModelAttribute("request")
     public HttpServletRequest populateRequest(){
           return request;
     }
}

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