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,...

InformationsquelleAutor Mike Melusky | 2015-11-20
Schreibe einen Kommentar