将序列化数组传递给struts2操作

我打算将JSON格式的整个表单数据发布到Struts2 Action.以下是我的代码段.纠正我要去哪里的错误或帮助我,以便我可以正确获取Action文件中的所有值.我在操作文件中的所有SOP都显示为null

var MyForm = $("#companyform").serializeArray();
   var data = JSON.stringify(MyForm);


   $.ajax({
       type: 'POST',
       url:'createcompany.action?jsonRequestdata='+data,
       dataType: 'json',
       success: function(data){
             console.log(stringify(data));
        }});

我的表单数据被转换为[{“ name”:“ tan”,“ value”:“ rrr”},{“ name”:“ pan”,“ value”:“ adf”},{“ name”:“ tod ”, “值”: “1”}]

Struts2操作文件:

String jsonRequestdata;
public String execute() throws Exception {
    JSONArray jsonArr = (JSONArray) new JSONParser().parse(jsonRequestdata);
    JSONObject json = (JSONObject) jsonArr.get(0);


    System.out.println("TAN=" + json.get("tan"));
    System.out.println("PAN=" + json.get("pan"));
    System.out.println("TOD=" + json.get("tod"));
    return "success";
}

现在的输出

TAN=null
PAN=null
TOD=null

解决方法:

要使用POST请求发送数据,您应该使用data属性,例如:

$.ajax({
   type: 'POST',
   url:'createcompany.action'
   data: 'jsonRequestdata='+data
   dataType: 'json',
   success: function(data){
      console.log(JSON.stringify(data.jsonRequestdata));
   }
});

要在action bean中获取数据,您需要使用public setter

public void setJsonRequestdata(String data){ this.jsonRequestdata = data; }

要将数据返回到成功回调函数,请使用public getter

public String getJsonRequestdata(){ return this.jsonRequestdata; } 

要从操作返回JSON,请使用结果类型json.

<result type="json"><param name="includeProperties">jsonRequestdata</param></result>

注意,如果将json拦截器添加到操作配置中,则可以在请求中使用JSON数据.在请求中使用Content-Type:“ application / json”将触发Struts2解析请求并将其自动反序列化到操作bean.

上一篇:Java-迁移到Struts 2.3.24之后,仍然不支持大于2GB的文件上传


下一篇:java-Struts2中的表单验证