我想将我的 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>
我的 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;
}
}
我的问题是如何在 Action 类中接收 JSON 对象。
注意:POST OF JSON 对象是成功的。我只是不知道如何通过 Action 类接收它。请帮助 谢谢
最佳答案
- 您的
struts.xml
条目中有错字 - 您是否在
struts.xml
中定义了图 block 结果和拦截器。 <强> Please see this link - 您发送到服务器的 json 不包含任何
data
键。因此它将始终为空。 由于 json 被表示为对象。您需要通过这种方式将 JSON 转换为 Java 对象。
方法 1.
为 lists,maps,number1,numberarray1,string1
等创建 setter。在的顶部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。
关于java - JSON Jquery 到 Struts2 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746051/