3

コレクションフォームの値であるjspファイルがあり、jquery Ajaxを介してStruts 2アクションクラスに送信します。

私のAjax関数は次のようになります

var DataValues = $("#Form1").serialize();
    alert(DataValues);
    alert(decodeURI(DataValues));
    $.ajax({url: urlPass,
        dataType:datatypepass,
        method:methodpass,
        data:DataValues,
        success: function(data,stat,Xhr){calbackPass(data,stat,Xhr);},
        error:function(xhr, status, error){alert("Error : "+xhr.responseText+" status : "+xhr.status);}
    });

URLをデコードして警告すると、正しくエンコードおよびデコードされたテキストが表示されます。

ajaxを介してstruts2に送信すると、問題が発生します。

Interceptor で値を確認したところ、値???????が表示されました。

インターセプター

  public class LoginInterceptor extends AbstractInterceptor implements StrutsStatics
    {
    @Override
        public String intercept(ActionInvocation arg0) throws Exception 
        {
            HttpServletRequest rs=ServletActionContext.getRequest();
            System.out.println(rs.getCharacterEncoding());
            Map session=ActionContext.getContext().getSession();
            Map<String, Object> parameters=ActionContext.getContext().getParameters();
            for(Map.Entry<String, Object> ll:parameters.entrySet())
            {
                String a[]=(String[])ll.getValue();
                for(String b:a)
                {
                    System.out.println(ll.getKey()+" : "+b);
                }   
  }}}}

私のjspファイルでは、コンテンツタイプをUTF-8として設定し、ajaxでもコンテンツタイプをチェックしましたが、機能していません。Tomcat server.xmlでも、コンテンツタイプをUTF-8として設定しました

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>

この UTF-8 に対して他の設定を行う必要があります。

前もって感謝します。

4

1 に答える 1