xmlns www org guia spring spring-mvc spring-boot thymeleaf

spring - www - thymeleaf th:insert



¿Cómo mostrar mensajes en Thymeleaf y Spring Boot? (5)

¿Hay un archivo messages.properties (no _de ) presente para permitir el repliegue? ¿Funciona? ¿Está su navegador configurado para la configuración regional DE_de ?

Creé una aplicación web Spring Boot que utiliza Thymeleaf como motor de plantillas. Configuré el MessageSource para buscar mensajes en una subcarpeta:

@Bean public MessageSource messageSource() { final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasename("i18n/messages"); messageSource.setFallbackToSystemLocale(false); messageSource.setCacheSeconds(0); return messageSource; }

En esta carpeta, creé el archivo messages_de.properties con el contenido ticket.type.BUG=Fehler . En mi plantilla intento mostrar el texto así:

<p th:text="#{ticket.type.BUG}">BUG</p>

Pero cuando la página está renderizada, obtengo lo siguiente:

<p>??ticket.type.BUG_de_DE??</p>

¿Qué me estoy perdiendo? ¿Tengo que configurar algún bean adicional?

PD:

En el ''lado del servidor'' puedo obtener el mensaje usando MessageSource#getMessage("ticket.type.BUG", null, Locale.GERMANY) .


Debido a que estoy usando Spring Boot, MessageSource está configurado con MessageSourceAutoConfiguration . Estas configuraciones se pueden cambiar fácilmente en el archivo application.properties . En mi caso tuve que agregar lo siguiente a este archivo:

spring.messages.basename=i18n/messages


La forma en que resolví la mensajería i18n fue definir el bean MessagesSource como tú. Además, tuve que anular el método getValidator() de WebMvcConfigurerAdapter .

@Override public Validator getValidator() { LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean(); validator.setValidationMessageSource( messageSource() ); return validator; }

Después de esto, funcionó para mí.



Y agregue esto a su archivo application.properties

#messages spring.messages.basename=i18n/messages

y almacene el archivo n en la carpeta correcta como se especifica anteriormente.

no necesita messageSource bean de origen de messageSource