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 动作的主要内容,如果未能解决你的问题,请参考以下文章