Представьте себе следующую ситуацию: приложению требуется глобальный атрибут модели, и эта модель должна быть извлечена из базы данных в соответствии с основной аутентификацией, это пример:
@ControllerAdvice
public class GlobalController {
@ModelAttribute("currentPage")
public CurrentPage getCurrentPage(final Authentication authentication) {
if (authentication != null && authentication.getPrincipal() instanceof User) {
return pageService.getCurrentPage((User) authentication.getPrincipal());
}
return null;
}
}
Теперь для запроса к На домашней странице, например, с аутентификацией, модель «currentPage» присваивается представлению после построения с помощью службы «pageSevrice» по запросу к базе данных. Хорошо, все в порядке, ничего не сложно!
Теперь, зная, что домашняя страница после загрузки представления запускает скрипт, в котором она хочет получить другие данные, например, AJAX запросами. Совершенно новый http-запрос к приложению, Spring создаст новый @ModelAttribute, новый «currentPage», новый доступ к базе данных. Однако этот новый атрибут модели уже используется визуально, в некоторых заклинаниях он бесполезен!
Также, например, для URL-адресов изображений любой запрос подразумевает создание этой модели снова !!
Итак, возникает вопрос , существует ли конфигурация, которая указывает Spring игнорировать создание @ModelAttribute, найденного в глобальном @ControllerAdvice для определенных запросов?
Мы ищем решение вне @SesssionAttribute. Мы не хотим сохранять модель в сеансе, и мы использовали «spring.jpa.open-in-view» в false.
Заранее благодарим вас за любые предложения.