2012-10-05 42 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