如何使用jQuery将JSON数据发布到Struts2 Action类

我在将数据从jQuery发送到struts2动作类时遇到了问题。 我已经看到了一个问题: JSON Jquery对Struts2的操作,但我不太了解解决方案。

这是我的问题:

json数组是这样的:

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

我想将json数据发送到struts2动作类。 jQuery代码是这样的:

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

但是,在Chrome的开发工具中,我已经看到了提交给服务器端的数据。 但在服务器端,我不知道如何接收json数据。

行动:

 public class Update extends ActionSupport{ private String data; public String getData(){ return data; } public void setData(String data){ this.data= data; } public String execute(){ System.out.println(data); return SUCCESS; } } 

这样, data为空。

我还尝试使用List来接收JSON数据。 将“数据”类型从String更改为List ,它再次失败。 可能是因为我不太了解Struts2正在使用的OGNL模型。

请帮我。 非常感谢你!

 {"id":"1","code":"111","name":"ddd"} 

步骤1:创建bean / pojo以累积/封装上述字段

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

第2步:更改您的操作代码以接收MyBeans列表

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

第3步:配置您的操作以反序列化JSON数据并填充操作字段(使用json-plugin)

     true   

第4步:在发送的ajax请求正文中进行必要的更改以匹配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!"); } }); 

以上代码未经测试。

嘿问题是你是直接发布对象数组。 所以Struts2不知道要调用的whicch方法。 像下面一样更改你的json数据。 然后它会工作。

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

然后在setter里面用object读取

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

Report是一个java类包含id,code,name,因为它是setters和getters的成员。