/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.web.filter;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
@Component
public final class CharacterEncodingFilter
extends OncePerRequestFilter
{
private String encoding;
@Value("${cms.url.characterEncoding}")
public void setCharacterEncoding( final String encoding )
{
this.encoding = encoding;
}
protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain filterChain )
throws ServletException, IOException
{
if ( request.getCharacterEncoding() == null )
{
request.setCharacterEncoding( encoding );
}
final String forcedCharset = request.getParameter( "_charset" );
if ( !StringUtils.isBlank( forcedCharset ) )
{
response.setCharacterEncoding( forcedCharset );
}
else
{
response.setCharacterEncoding( encoding );
}
filterChain.doFilter( request, response );
}
}