Korzystam z:
- Tomcata 8.14
- Springa 4.1.1.RELEASE
- Thymeleaf 2.1.3.RELEASE
Po wyslaniu formularza metoda POST psuje mi sie kodowanie. Probowalem to naprawić w następujący sposób.
- W pliku web.xml dodałem
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- W konfiguracji Tomcata w pliku server.xml mam ustawione
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"/>
- W pliku web.xml (konfiguracja serwera Tomcat) odkomentowalem
<filter>
<filter-name>setCharacterEncodingFilter</filter-name>
<filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<async-supported>true</async-supported>
</filter>
- Fragment konfiguracji MVC
@Bean
public ServletContextTemplateResolver templateResolver() {
ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".html");
// NB, selecting HTML5 as the template mode.
resolver.setTemplateMode("HTML5");
resolver.setCacheable(this.templateResolverCacheable);
resolver.setCacheablePatterns(null);
resolver.setNonCacheablePatterns(null);
resolver.setCacheTTLMs(this.templateResolverCacheTTLMs);
resolver.setCharacterEncoding("utf-8");
return resolver;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setOrder(1);
viewResolver.setViewNames(new String[]{"*"});
viewResolver.setCache(this.viewResolverCache);
viewResolver.setCacheLimit(this.viewResolverCacheLimit);
viewResolver.setCacheUnresolved(this.viewResolverCacheUnresolved);
viewResolver.setCharacterEncoding("utf-8");
return viewResolver;
}
Niestety nic nie pomoglo. Jakies pomysly?