2016-09-27 9 views
1

私はコントローラにキリル文字を送信しようとしています。 私はAJAXを経由してパラメータを渡すと、私は私のjspの上にISO-8859-1春の文字エンコーディング

を受け取るメソッドをGETだとき介してコントローラに送信する場合:私は、カスタムフィルタを作成しようとしました

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

それは私がのcon​​figure MessageConverters

@Configuration 
@EnableWebMvc 
public class WebConfig extends WebMvcConfigurerAdapter { 

//Other configuration 

@Override 
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
    StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(); 
    stringConverter.setSupportedMediaTypes(Arrays.asList(new MediaType("text", "plain", Charset.forName("UTF-8")))); 
    converters.add(stringConverter); 

} 
} 
を試してみました

@WebFilter(urlPatterns = "/*") 
public class EncodingFilter implements Filter { 

//INIT method 

@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    HttpServletRequest servletRequest = (HttpServletRequest) request; 
    HttpServletResponse servletResponse = (HttpServletResponse) response; 

    String requestEncoding = servletRequest.getCharacterEncoding(); 

    if (requestEncoding == null) { 
     servletRequest.setCharacterEncoding(ENCODING); 
    } 

    String responseEncoding = servletResponse.getCharacterEncoding(); 

//  if (responseEncoding == null) { 
//   servletResponse.setCharacterEncoding(ENCODING); 
//  } 
     servletResponse.setCharacterEncoding(ENCODING); 

    chain.doFilter(servletRequest, servletResponse); 
} 

//DESTROY method 

常にISO-8859-1応答に仕事、入ってくるエンコーディングをdoesnot

と春CharacterEncodingFilter

public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
protected String[] getServletMappings() { 
    return new String[]{"/"}; 
} 

@Override 
protected Class<?>[] getRootConfigClasses() { 
    return new Class<?>[]{ApplicationConfig.class}; 
} 

@Override 
protected Class<?>[] getServletConfigClasses() { 
    return new Class<?>[]{WebConfig.class}; 
} 

@Override 
protected Filter[] getServletFilters() { 

    CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); 
    characterEncodingFilter.setEncoding("UTF-8"); 
    characterEncodingFilter.setForceEncoding(true); 
    return new Filter[] { characterEncodingFilter}; 
} 
} 

しかし、それは助けにはならない、 AJAX要求

$(window).load(function(){ 

$("#firstUser").keyup(function(){ 
var value = $(this).val(); 
console.log(value); 

var searchRequest = $.ajax({ 
       type: "GET", 
       url: "calc/name", 
       encoding: "UTF-8", 
       data: { 
        'userName' : value 
       }, 
       dataType: "text", 
       success: function(msg){ 

       } 
      }); 

      }) 
}); 
+0

Springにはすでに 'CharacterEncodingFilter'が適切に設定されているというフィルタが用意されています。私は 'AbstractAnnotationConfigDispatcherServletInitializer'をあなた自身のものを書く代わりに使うことを提案します。しかし、私はあなたのajaxリクエストを送信する方法に間違いがあると思われます。 –

+0

私はajaxリクエストを送信するときにcontentType: "charset = utf-8"を設定しました。 AbstractAnnotationConfigDispatcherServletInitializerを使用しようとすると、結果は同じです。 – Ilya

+0

を記述する代わりに、コードを追加してください。私は 'AbstractAnnotationConfigDispatcherServletInitializer'を使って言うことはしませんでしたが、あなたのコードをクリーンアップします。 –

答えて

0

私はそれを修正しました。私はちょうど他のtomcatのバージョンをインストールします。 Tomcat7に問題が表示され、Tomcat8はすべて問題ありません。

PS:私ものWebConfigにHttpMessageConverters構成除去:Tomcatの/ CONFにserver.xmlには、両方のバージョンで

PSSを構成しました。これはエンコーディングには影響しません。

関連する問題