Как добавить глобальную переменную, такую как имя пользователя, которое будет использоваться вокруг моего контекста шаблона?
В настоящее время я устанавливаю их явно для каждого объекта ModelAndView в моем TemplateController.
Как добавить глобальную переменную, такую как имя пользователя, которое будет использоваться вокруг моего контекста шаблона?
В настоящее время я устанавливаю их явно для каждого объекта ModelAndView в моем TemplateController.
Несколько способов сделать это.
Если вы хотите добавить переменную ко всем представлениям, обслуживаемым одним контроллером, вы можете добавить аннотированный метод @ModelAttribute
- см. ссылку doc.
Обратите внимание, что вы также можете использовать тот же @ModelAttribute
механизм, адрес сразу нескольких контроллеров. Для этого вы можете реализовать этот метод @ModelAttribute
в классе, аннотированном с помощью @ControllerAdvice
- см. Справочный документ.
Вам может понравиться просмотр @ModelAttribute. http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html
Blockquote В Тимелеафе эти атрибуты модели (или контекстные переменные в терминологии Тимелеафа) могут быть доступны со следующим синтаксисом: ${attributeName}, где attributeName в нашем случае является сообщениями. Это выражение Spring EL.
Если вы просто хотите что-то из своего application.properties
в свой шаблон thymeleaf
, то вы можете использовать Spring SpEL.
${@environment.getProperty('name.of.the.property')}
@ControllerAdvice
работайте для меня:
@ControllerAdvice(annotations = RestController.class)
public class AnnotationAdvice {
@Autowired
UserServiceImpl userService;
@ModelAttribute("currentUser")
public User getCurrentUser() {
UserDetails userDetails = (UserDetails)
SecurityContextHolder.getContext()
.getAuthentication().getPrincipal();
return userService.findUserByEmail(userDetails.getUsername());
}
}