我在将数据从jQuery发送到struts2动作类时遇到了问题.
我看到了这个问题: JSON Jquery to Struts2 action,但我不太了解解决方案.
我看到了这个问题: JSON Jquery to Struts2 action,但我不太了解解决方案.
这是我的问题:
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; } }
这样,数据为空.
我还尝试使用List来接收JSON数据.将“data”类型从String更改为List< Node>,它再次失败.可能是因为我不太了解Struts2正在使用的OGNL模型.
请帮我.非常感谢你!
解决方法
{"id":"1","name":"ddd"}
步骤1:创建bean / pojo以累积/封装上述字段
class MyBean{ String id,code,name; //getters & setters }
第2步:更改您的操作代码以接收MyBeans列表
public class Update extends ActionSupport{ private List<MyBean> data; //other code,getters & setters }
第3步:配置您的操作以反序列化JSON数据并填充操作字段(使用json-plugin)
<action name="Update" class="Update"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="json"> <param name="enableSMD">true</param> </interceptor-ref> </action>
第4步:在发送的ajax请求体中进行必要的更改以匹配action-params / fields
var data = JSON.stringify(dataObj); $.ajax({ url: "Update",data: "data:"+data,success : function(){ alert("You made it!"); } });
以上代码未经测试.