Jaqen K'uba
Jaqen K'uba

Reputation: 289

Spring filter mapping in Java driven configuration

I don't use web.xml in my project. Therefore I extend WebMvcConfigurerAdapter for my MVC config and AbstractAnnotationConfigDispatcherServletInitializer for initializing app. I need to set encoding to UTF-8. How can I add filter mappings?

I want to achieve following code in Java based configuration.

 <filter>
    <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Upvotes: 0

Views: 3531

Answers (2)

Jaqen K&#39;uba
Jaqen K&#39;uba

Reputation: 289

I found a sollution here.

@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        filter.setForceEncoding(true);
        http.addFilterBefore(filter,CsrfFilter.class);
        //rest of your code   
    }
//rest of your code
}

Upvotes: 2

Oskar Dajnowicz
Oskar Dajnowicz

Reputation: 1770

You can add a bean into your configuration class

@Bean
public FilterRegistrationBean encodingFilter() {
    CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter("UTF-8", true);
    FilterRegistrationBean filterRegBean = new FilterRegistrationBean();
    filterRegBean.setUrlPatterns(getRootPathUrls());
    filterRegBean.setFilter(encodingFilter);
    filterRegBean.setOrder(1);
    return filterRegBean;
}

private List<String> getRootPathUrls() {
    List<String> urlPatterns = new ArrayList<String>();
    urlPatterns.add("/*");
    return urlPatterns;
}

Docs Here

Upvotes: 2

Related Questions