[英]How to use jQuery to post JSON data to a Struts2 Action class
我在將數據從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數據。 將“data”類型從String更改為List<Node>
,它再次失敗。 可能是因為我不太了解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<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",
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的成員。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.