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

来源:岁月联盟 编辑:exp 时间:2012-07-30
最主要的是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;
 }
 
 
作者:zhuzhenlong998