Spring Boot Internationalisierung (Nachrichten.Eigenschaften)
Ich versuche, fügen Sie einfach die Versionsnummer einer Anwendung zu einer Thymeleaf-fragment. Ich bin mit Spring Boot 1.2.5. Wenn ich eine Datei mit dem Namen /resources/messages.Eigenschaften die wie folgt definiert sind:
application.version=1.0.0
Und ich habe eine Thymeleaf anzeigen mit dem folgenden fragment:
Application Version: <span th:text="#{application.version}">
Es ist die Anzeige etwas wie ??- Anwendung.version_en_US?? statt 1.0.0. (Ich habe auch Dateien mit dem Namen messages_en.Eigenschaften und messages_en_US.Eigenschaften in den classpath mit dem gleichen Inhalt zu.) Ich bin wirklich nicht sicher, wie dieses problem zu beheben... ich habe Stunden damit verbracht, auf etwas, das scheint unglaublich trivial...
Application.java
@SpringBootApplication
@ComponentScan(basePackages = {"org.application"})
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class, ThymeleafAutoConfiguration.class})
@PropertySources(value = {@PropertySource("classpath:website.properties")})
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
WebConfig.java
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public SpelAwareProxyProjectionFactory projectionFactory() {
return new SpelAwareProxyProjectionFactory();
}
@Bean
public SessionHandler sessionHandler() {
return new SessionHandler();
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/web/auth/login").setViewName("auth/login");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations(
"/resources/");
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Bean
public CookieLocaleResolver localeResolver() {
CookieLocaleResolver localeResolver = new CookieLocaleResolver();
localeResolver.setDefaultLocale(Locale.ENGLISH);
return localeResolver;
}
@Bean
public ResourceBundleMessageSource messageSource() {
return new ResourceBundleMessageSource();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
//Locale change interceptor
registry.addInterceptor(localeChangeInterceptor());
//Utility interceptor which helps with the "active" link styles in the navigation. --mm
registry.addInterceptor(new BaseInterceptor());
//Expire session after a period of time
registry.addInterceptor(sessionHandler());
}
}
ThymeleafConfig.java
@Configuration
public class ThymeleafConfig {
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
//must use Legacy HTML5 as the template, otherwise Handlebars will not parse!
//
//this should hopefully be fixed in Thymeleaf 3.0
resolver.setTemplateMode("LEGACYHTML5");
resolver.setCacheable(false);
return resolver;
}
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setTemplateResolver(templateResolver());
//Add Spring security
Set<IDialect> dialects = new HashSet<IDialect>();
engine.setAdditionalDialects(dialects);
engine.addDialect(new SpringSecurityDialect());
return engine;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[]{"*"});
viewResolver.setCache(false);
return viewResolver;
}
}
Kaufen Sie eine virtuelle Runde der Aufnahmen zu wem auch immer, können dieses Problem beheben,...
Du musst angemeldet sein, um einen Kommentar abzugeben.
ich denke, man konnte immer fügen Sie diese in Ihre templateEngine Methode:
Auch aus der design-Perspektive,würde ich dir empfehlen, zu versuchen, mit der Autokonfiguration für thymeleaf, zu entfernen(das ausschließen),und viele andere Sachen, die spring boot bietet automatisch für Sie.