Beim Versuch, eine statische Zeichenfolge zu lokalisieren, wird die Nachricht mit Fragezeichen "??"Thymeleaf und Spring Boot liest keine Eigenschaften aus Lokalisierungsdateien - Anstelle der lokalisierten Zeichenfolge werden Fragezeichen angezeigt
z.B. ? Ticket.type_en_US ??
<p th:text="#{ticket.type}">Blah</p>
- Ich bin mit SpringBoot 1.3.6.RELEASE
- Thymeleaf: 3.0.0.RELEASE
- thymeleaf-Spring4 Artefakt
ich den Basisnamen meiner Botschaften konfiguriert haben in application.properties
und der Inhalt dieser messages.properties und messages_en_US.prope rties ist:
ticket.type=BUGS!!!!
Config:
spring.messages.basename=messages
Ausgang beim Start:
2016-07-19 08: 38: 28,673 DEBUG 5175 --- [main ] atractionConfigEmbeddedWebApplicationContext: Verwenden von MessageSource [org.springframework.context.support.ResourceBundleMes sageSource: Basisnamen = [Nachrichten]]
Ich versuchte auch programmatisch die MessageResource im Code unten. Ich habe die Datei messages.properties im selben Ordner wie die Datei application.properties abgelegt. src/main/resources/
@Configuration
@ComponentScan("controller")
public class WebConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware{
private ApplicationContext applicationContext;
@Autowired
private MessageSource messageSource;
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
engine.setMessageSource(messageSource);
return engine;
}
@Bean
public ITemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setApplicationContext(applicationContext);
resolver.setPrefix("/WEB-INF/templates/");
resolver.setTemplateMode(TemplateMode.HTML);
return resolver;
}
}
Der Vollständigkeit halber hier ist meine Anwendung config (wie andere hatte ich die Thymeleaf Klasse exluse):
@SpringBootApplication(exclude={org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
ich auch überprüft haben, dass die Nachricht Bündel durch pring aus dem Inhalt auf einem meines REST Endpunktes Anrufe geladen:
@Autowired
private MessageSource messageSource;
@GET
@Produces("application/json")
public List<MyData> getData() {
System.out.println("HERE 1 in Conversions");
System.out.println(messageSource.getMessage("ticket.type", null, Locale.US));
return getTheData();
}
Dies ist die ausdruckt folgend, damit ich weiß Frühling-boot i s Laden der Ressourcenbündel, aber Thymeleaf Kommissionierung sie nicht irgendwie nach oben:
BUGS!!!!
Hier meine volle HTML-Seite, vielleicht gibt es ein Problem mit sich:
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Kitchen Sink</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link href="http://cdn.jsdelivr.net/webjars/bootstrap/3.3.4/css/bootstrap.min.css"
th:href="@{/webjars/bootstrap/3.3.4/css/bootstrap.min.css}"
rel="stylesheet" media="screen" />
<script src="http://cdn.jsdelivr.net/webjars/jquery/2.1.4/jquery.min.js"
th:src="@{/webjars/jquery/2.1.4/jquery.min.js}"></script>
<link href="../static/css/mike.css"
th:href="@{css/mike.css}" rel="stylesheet" media="screen"/>
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Hello</h1>
<h2>Welcome to the Kitchen Sink!</h2>
<p th:text="#{ticket.type}">Blah</p>
<p th:text="#{test.type}">dssfgf</p>
</div>
</body>
</html>
ähnlich wie diese verwenden können http://stackoverflow.com/questions/28750292/custom-spring-boot-starter-how-do -you-contribre-i18n-messages-to-the-messageso – Saravana
Haben Sie 'ReloadableResourceBundleMessageSource' anstelle von' ResourceBundleMessageSource' probiert? – Lucky
Warum konfigurieren Sie es selbst? Spring Boot konfiguriert Thymianblatt, Lokalisierung usw. bereits für Sie ... Arbeiten Sie mit dem Framework anstatt mit dem Framework. –