我有一个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时,它会出现问题。
我已经检查了拦截器中的值,显示值为"???????"。
拦截器。
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进行完成。
提前致谢。