spring集成thymeleaf时,除了要配置spring提供的filter
@Override
protected Filter[] getServletFilters() {
// TODO Auto-generated method stub
final CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
return new Filter[] { encodingFilter };
}
还需要配置thymeleaf相关bean的编码方式
@Autowired
private WebApplicationContext webApplicationContext;
// 配置templateResolver
@Bean
public SpringResourceTemplateResolver templateResolver() {
SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver();
resolver.setPrefix("/WEB-INF/templates/");
resolver.setApplicationContext(webApplicationContext);
resolver.setSuffix(".html");
//这里设置utf-8
resolver.setCharacterEncoding("UTF-8");
resolver.setOrder(1);
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCacheable(false);
return resolver;
}
// 配置模板引擎
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine();
springTemplateEngine.setTemplateResolver(templateResolver());
// 如果要好的兼容性就设置成false,默认是false
springTemplateEngine.setEnableSpringELCompiler(true);
return springTemplateEngine;
}
// 配置viewResolver viewResolver -> templateEngine -> templateResolver
@Bean
public ThymeleafViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
//这里设置utf-8
viewResolver.setCharacterEncoding("UTF-8");
return viewResolver;
}
@Override
public void addFormatters(FormatterRegistry registry) {
// TODO Auto-generated method stub
WebMvcConfigurer.super.addFormatters(registry);
registry.addFormatter(new VarietyFormatter());
registry.addFormatter(new DateFormatter());
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// TODO Auto-generated method stub
WebMvcConfigurer.super.addResourceHandlers(registry);
registry.addResourceHandler("/image/**").addResourceLocations("/images/");
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
}
@Bean
public ResourceBundleMessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("Messages");
messageSource.setDefaultEncoding("utf-8");
return messageSource;
}