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í.
La fuente del mensaje será relativa a classpath:
messageSource.setBasename(" classpath:i18n/messages");
Aquí hay un tutorial al que hice referencia para thymeleaf y spring = http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html
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