关于struts2后台接受jquery ajax提交的复杂对象

=============================Struts2配置文件==================================================

最主要的是Struts2的配置  如下配置好了,才能接受从前台通过ajax传来的复杂对象

<package name="abstract_struts" abstract="true" extends="struts-default,json-default" namespace="/">
  <interceptors>
   <interceptor-stack name="myStack">
    <interceptor-ref name="json"></interceptor-ref>
    <interceptor-ref name="defaultStack" />  
   </interceptor-stack>
  </interceptors>
  <default-interceptor-ref name="myStack" />
 </package>

<package name="TestSHH" namespace="/" extends="abstract_struts">
        <action name="login" class="com.hisoft.test.file.LoginAction" method="login">
            <result name="success">/jsp/file/fileList.jsp</result>
            <result name="false">/jsp/error.jsp</result>
        </action>
        
        <action name="addFile" class="com.hisoft.test.file.LoginAction" method="addFile">
         <result type="json">
    <param name="root">fileInfo.strFileList</param>
   </result>
        </action>
</package>

=============================前台js==================================================

var params = getFile();
var dataset = JSON.stringify(params);

$.ajax({
   url:url,
   type:"post",
   async:true,
   contentType:"application/json",
    data:dataset,
     success:function(json){
         if(json.hashSyError){
     alertMessage(json.errorCode,json.errorMsg);
    }
    else if(json.hashApError){
     alertMessage(json.errorCode,json.errorMsg);
    }else{
     $("#tblFileList").datagrid('load',JSON.parse(json));
        $("#tblFileList").datagrid('loadData',JSON.parse(json));
    }
   },
   error:function(e){
       alert(e.responseText);
   }
  });

function getFile() {

// fileInfo是action中对应的复杂对象,也可以说是一个类的对象

  var params={fileInfo:{
   fileName:$("#fileName").val(),
   fileType:$("#fileType").val(),
   fileContent:$("#fileContent").val()
  }};
  return params;
 }

=============================后台action==================================================

public String addFile() {
  System.out.println(fileInfo.getFileName());// fileInfo一定要有get和set方法
  System.out.println(fileInfo.getFileContent());
  return SUCCESS;
 }

相关推荐