[SPRING] Spring 4 with thymeleaf 국제화는 자원 특성 파일에서 메시지를 식별하지 못함
SPRINGSpring 4 with thymeleaf 국제화는 자원 특성 파일에서 메시지를 식별하지 못함
국제화를 지원하기 위해 Spring 4 + thymeleaf로 webapp에서 작업하기. 나는 basename의 위치 파일과 구성을 변경하고 여전히받는 많은 방법을 시도해 본다 ?? 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());
}
}
properties 파일은 src \ main \ webapp \ WEB-INF \ messages_en.properties 및 src \ main \ webapp \ WEB-INF \ messages_ch.properties에있는 WEB-INF에 있습니다.
해결법
-
==============================
1.ViewResolver를 Spring에만 등록하고 SpringTemplateEngine과 ServletContextTemplateResolver 인 두 개의 다른 구성 요소를 등록하지 않아서 문제를 재현 할 수 있었다고 생각합니다.
ViewResolver를 Spring에만 등록하고 SpringTemplateEngine과 ServletContextTemplateResolver 인 두 개의 다른 구성 요소를 등록하지 않아서 문제를 재현 할 수 있었다고 생각합니다.
그래서 스프링 컨테이너에 2 개의 다른 구성 요소를 등록하기 위해 구성을 약간 분할해야한다고 생각합니다. 코드는 다음과 같습니다.
@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; }
from https://stackoverflow.com/questions/25159685/spring-4-with-thymeleaf-internationalization-not-identify-message-from-resource by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring과 Hibernate를 이용한 다중 데이터베이스 트랜잭션 관리 (0) | 2019.04.12 |
---|---|
[SPRING] 스프링 부트는 문자열에서 자리 표시자를 해결할 수 없습니다. (0) | 2019.04.12 |
[SPRING] 메타 주석 및 테스트 클래스에서 @ActiveProfiles가 작동하지 않음 (0) | 2019.04.12 |
[SPRING] 스프링 MVC 폼 유효성 검사가 작동하지 않습니다. (0) | 2019.04.12 |
[SPRING] Grails 플러그인 빈의 오버라이드 메소드 (0) | 2019.04.12 |