xmlns www org guia java spring-mvc thymeleaf

java - www - Spring MVC+Thymeleaf: agregando variables al contexto de todas las plantillas



thymeleaf vs jsf (4)

¿Cómo puedo agregar una variable "global" como el nombre de usuario para usarla en todo el contexto de mi plantilla?

Actualmente los estoy configurando explícitamente para cada objeto ModelAndView en mi TemplateController.


Es posible que desee echar un vistazo a @ModelAttribute. http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

Blockquote En Thymeleaf, se puede acceder a estos atributos de modelo (o variables de contexto en la jerga de Thymeleaf) con la siguiente sintaxis: $ {attributeName}, donde attributeName en nuestro caso es mensajes. Esta es una expresión de Spring EL.


Si simplemente desea algo de su thymeleaf application.properties en su plantilla de thymeleaf , entonces puede hacer uso de Spring''s SpEL .

${@environment.getProperty(''name.of.the.property'')}


Varias formas de hacer esto.

Si desea agregar una variable a todas las vistas servidas por un solo controlador, puede agregar un método anotado @ModelAttribute ; consulte el documento de referencia .

Tenga en cuenta que también puede, utilizando el mismo mecanismo @ModelAttribute , direccionar varios Controladores a la vez. Para eso, puede implementar ese método @ModelAttribute en una clase anotada con @ControllerAdvice - vea el documento de referencia .


@ControllerAdvice trabaja para mí:

@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()); } }