How to use jQuery to post JSON data to a Struts2 Action class

前端 未结 2 1557
臣服心动
臣服心动 2021-02-09 09:58

I\'ve a problem sending data from jQuery to struts2 action class. I have seen the question: JSON Jquery to Struts2 action but I don\'t understand the solution quite well.

<
相关标签:
2条回答
  • 2021-02-09 09:59

    Hey The problem is you are directly posting array of objects. So Struts2 don't know whicch method to call. Change your json data like below. Then it will work.

    {"data":[{"id":"1","code":"111","name":"ffffd"},
    "id":"2","code":"222","name":"sss"},
    {"id":"3","code":"333","name":"eee"}]}
    

    Then inside the setter read with object

    public void setData(List < Report > data) {
        System.out.println("Setter Call Flow");
        this.data = data;
    }
    

    Where Report is a java class contains id,code,name as it's members with setters and getters.

    0 讨论(0)
  • 2021-02-09 10:26
    {"id":"1","code":"111","name":"ffffd"}
    

    Step 1 : Create a bean/pojo to accumulate/encapsulate the above fields

    class MyBean{
        String id,code,name;
        //getters & setters
    }
    

    Step 2 : Change your action code to receive a List of MyBeans

    public class Update extends ActionSupport{
        private List<MyBean> data;
    
       //other code, getters & setters
    }
    

    Step 3: Configure your action to de-serialize JSON data and fill the action fields (using json-plugin)

        <action name="Update" class="Update">
            <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="json">
                <param name="enableSMD">true</param>
            </interceptor-ref>
    </action>
    

    Step 4 : Make necessary changes in the ajax request body being sent to match the action-params/fields

    var data = JSON.stringify(dataObj);
    $.ajax({
      url: "Update",
      type: "post",
      data:  "data:"+data,
      dataType: 'json',
      contentType:"application/json;charset=utf-8",
      success : function(){
        alert("You made it!");
      }
    });
    

    The above code is untested.

    0 讨论(0)
提交回复
热议问题