Совместное использование модели. Атрибут между представлениями разных контроллеров. - PullRequest
0 голосов
/ 11 января 2019

В моем текущем проекте Spring (с использованием Thymeleaf) у меня есть эти два контроллера HomeController и универсальный контроллер, расширенный для всех контроллеров, связанных с объектами из уровня модели.

В HomeController у меня есть эта модель. Атрибут mthod:

@ModelAttribute("usuario")
public Usuario usuario() {
  return usuario.findBy("username", SecurityContextHolder.getContext().getAuthentication().getName());
}

Что, очевидно, доступно для представлений, отображаемых в этом контроллере. Есть ли способ поделиться этим модельным атрибутом с представлениями, сопоставленными в другом контроллере?

Я читал во многих местах об этом RedirectAttributes ресурсе, но я предполагаю, что он работает только с перенаправленными представлениями (как modelAndView.setViewName("redirect:welcome");)?

1 Ответ

0 голосов
/ 11 января 2019

Переместите метод в отдельный класс и добавьте аннотацию @ControllerAdvice к этому классу. Таким образом, все атрибуты модели в этом классе будут применяться ко всем контроллерам в приложении.

Если вы хотите ограничить набор контроллеров, где будет доступен атрибут модели, вы можете указать в аннотации @ControllerAdvice, что только контроллеры в определенных пакетах или с конкретными аннотациями или реализации определенных интерфейсов должны быть улучшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...