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.
<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.
{"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.