JSON Jquery 到 Struts2 动作

Posted

技术标签:

【中文标题】JSON Jquery 到 Struts2 动作【英文标题】:JSON Jquery to Struts2 action 【发布时间】:2012-09-26 14:21:08 【问题描述】:

我想将我的 JSON 对象从 Javscript 发送到 Struts2 Action。

示例 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

$.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>   

我的行动课

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 对象。

注意:POST OF JSON 对象是成功的.. 我只是不知道如何通过 Action Class 接收它.. 请帮助 谢谢

【问题讨论】:

你能分享你的动作课吗?您是否还在 struts.xml 中定义了结果类型 json 并定义了拦截器 class="coma,ctions.json.JsonAction" coma,ctions 中的错字? 好吧,您已经在使用插件 (json),因此插件足以用请求中发布的 JSON 数据填充您的操作类,您只需要注意 json 格式和一些小规则,请查看插件文档。 【参考方案1】:
    您的 struts.xml 条目中有错字 您是否在 struts.xml 中定义了切片结果和拦截器。 Please see this link 您发送到服务器的 json,不包含任何 data 键。所以它将始终为空。 由于 json 被表示为对象。您需要通过这种方式将 JSON 转换为 Java 对象。

方法一。

lists,maps,number1,numberarray1,string1 等创建setter。在 this link 的顶部,定义了执行此操作的方式。然后就可以通过这种方式访问​​所有的变量了。

方法 2。 在您的 javascript 中定义一个新对象。

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

在你的 action 类中,为此创建 getter 和 setter。

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

这将为您提供整个 json 对象作为地图。

【讨论】:

我的问题是我的实际数据总是等于 null @Ashish Gupta,感谢您的解释我已经尝试过这个解决方案,我可以看到我的数据在 javascript 端被正确读取并被正确发送。但是,我在我的 Struts 操作中看不到数据。我按照你说的方法做了。在我的 struts.xml 中是否需要设置任何参数或拦截器?我有一种感觉,也许是这样。谢谢

以上是关于JSON Jquery 到 Struts2 动作的主要内容,如果未能解决你的问题,请参考以下文章

隐藏从jsp传递到struts2动作类的参数

将 json 发布到 struts 2 动作

如何在 Struts 2 中将 JSON 绑定到 bean

Struts2 jquery 插件网格:选择行时,调用动作并隐藏网格中的行

Struts2 模型驱动动作中的继承可能吗?

Struts2+Jquery实现ajax并返回json类型数据