2012-10-05 77 views
6

我想從Javscript發送我的JSON對象到Struts2 Action。JSON jquery到Struts2的操作

樣品JSON對象

{ 
     "lists":["list1","list2","list3","list4","list5"], 
     "maps": { 
      "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
     }, 
     "number1":123456789, 
     "numberarray1":[1,2,3,4,5,6,7,8,9], 
     "string1":"A", 
     "stringarray1":["A1","B1"] 
    } 

我的jQuery的阿賈克斯

$.ajax({ 
    type: 'POST', 
    url: 'json/JSON.action', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    async: false , 
    contentType: 'application/json; charset=utf-8', 
    success: function(){window.alert('Done');} 
}); 

struts.xml的配置

<action name="JSON" class="com.actions.json.JsonAction" method="getJSON"> 
    <result type="json"/> 
</action> 

我的Action類

public class JsonAction extends ActionSupport { 


    private String data; 


    public String getJSON() { 


     return ActionSupport.SUCCESS; 
    } 

    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 



} 

我的問題是如何接收操作類中的JSON對象。

注:JSON對象的POST是成功的。我只是不知道如何通過Action類接受它..請幫助 謝謝

+0

你能分享你的Action類嗎?還有,你還定義了結果類型JSON在你的struts.xml和定義攔截器 –

+0

'class =「coma,ctions.json.JsonAction」'錯字在昏迷,ctions'? – Daniel

+0

好吧,您已經使用插件(json),因此插件能夠充分利用從請求中發佈的JSON數據填充您的動作類,您只需要關心json格式和一些小規則,查看插件文檔。 –

回答

6
  1. 有一個錯字在你的struts.xml進入
  2. 您是否在struts.xml中定義了切片結果和攔截器。 Please see this link
  3. 您要發送到服務器的json不包含任何data密鑰。所以它將始終爲空。由於json被表示爲對象。您需要以這種方式將JSON轉換爲Java對象。

接近1

創建lists,maps,number1,numberarray1,string1等制定者。在this link的頂部,定義了這樣做的方式。然後你可以用這種方式訪問​​所有的變量。

方法2. 在JavaScript中定義一個新的對象。

var sentData ={}; 
sentData ["sentData "] = data; 
// And in your ajax call , 
data: JSON.stringify(sentData), 

而在你的動作類中,爲此創建getter和setter。

Map<K.V> sentData = new HashMap<K,V>(); 

這會給你整個json對象作爲一個Map。

+0

我的問題是我的數據在行動總是等於null – newbie

+0

我不明白 – newbie

+0

不能使這項工作:( – newbie