【问题标题】:Passing serialize array to struts2 action将序列化数组传递给 struts2 动作
【发布时间】:2016-02-25 18:49:13
【问题描述】:

我计划将整个表单数据以 JSON 格式发布到 Struts2 Action。下面是我的代码 sn-ps。纠正我哪里出错或帮助我,以便我可以正确获取操作文件中的所有值。我所有的 SOP in Action 文件都显示为 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","value":"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

【问题讨论】:

    标签: java jquery json struts2 struts2-jquery


    【解决方案1】:

    要使用 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; }
    

    要将数据返回给success 回调函数,请使用公共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。

    【讨论】:

    • 非常感谢您的帮助。但仍然没有任何变化。
    【解决方案2】:

    由于我使用的是 name,value 我必须使用 name 来获取它。下面是工作代码

    JSONArray jsonArr = (JSONArray) new JSONParser().parse(jsonRequestdata);
    
        for(int i=0;i<jsonArr.size();i++){
                JSONObject json=(JSONObject) jsonArr.get(i);   
                System.out.println("name=" + json.get("name"));
                System.out.println("value=" + json.get("value"));
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多