gpt4 book ai didi

java - 带有 thymeleaf 国际化的 Spring 4 无法识别来自资源属性文件的消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:24 27 4
gpt4 key购买 nike

使用 Spring 4 + thymeleaf 开发我的 webapp 以支持国际化。我尝试了很多方法来更改位置文件和基本名称的配置,但仍然收到 ??label.greeting_**??在模板结果上。下面是我的代码

@Configuration
@EnableSpringConfigured
@EnableWebMvc
@EnableScheduling
@ComponentScan(basePackages = {"com.categorybags.web.controller", "com.categorybags.persistence.services"})
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/res/**").addResourceLocations("/res/");
}

@Bean
public ViewResolver viewResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setPrefix("/WEB-INF/jsp/");
templateResolver.setSuffix(".jsp");
templateResolver.setTemplateMode("HTML5");

SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver);

ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setOrder(1);
viewResolver.setTemplateEngine(templateEngine);

return viewResolver;
}

@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver localeResolver = new SessionLocaleResolver();
localeResolver.setDefaultLocale(new Locale("en"));
return localeResolver;
}

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("lang");
return localeChangeInterceptor;
}

@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("WEB-INF/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}

public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
}

属性文件在 WEB-INF 下,路径是 src\main\webapp\WEB-INF\messages_en.properties 和 src\main\webapp\WEB-INF\messages_ch.properties

最佳答案

我想我能够通过仅将 ViewResolver 注册到 Spring 而不是 SpringTemplateEngineServletContextTemplateResolver 这两个其他组件来重现您的问题>.

所以我认为您应该尝试稍微拆分您的配置以将这两个其他组件注册到 spring 容器。这是代码:

@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setCacheable(false);
templateResolver.setPrefix("/WEB-INF/jsp/");
templateResolver.setSuffix(".jsp");
templateResolver.setTemplateMode("HTML5");
return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}

@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
viewResolver.setOrder(1);
return viewResolver;
}

关于java - 带有 thymeleaf 国际化的 Spring 4 无法识别来自资源属性文件的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25159685/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com