如何使用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的成员。