我想在jquery中使用ajax将json数据从jsp页面传输到action类。 以下是jquery代码。
$.ajax({
type : 'POST',
url : contextPath+"/postData.action",
async: false ,
data :json,
dataType:"json",
contentType: 'application/json; charset=utf-8',
contentType: "application/json",
success : function(result) {
}
});
Follwing是行动类代码:
private String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
@Override
public String execute()
{
System.out.println(data);
return ActionSupport.SUCCESS;
}
Struts.xml配置文件
<action name="postData" class="demo.StoreJSONData" >
<result name="success">/jsp/output.jsp</result>
</action>
示例代码json代码:
{
"rectangle": {
"0": {
"id": "rectangle_1",
"displayData": "<div class=\"\" style=\"background: none repeat scroll 0% 0% rgb(255, 255, 255); width: 389px; height: 129px; position: absolute; left: 92px; top: 360px; border: 1px solid black; z-index: 4;\" id=\"rectangle_1\"></div>"
}
},
"eclipse": {
"0": {
"id": "eclipse_1",
"displayData": "<div class=\"\" style=\"position: absolute; z-index: 5; background-color: rgb(243, 239, 15); border: 1px solid black; width: 245px; height: 83px; border-radius: 50% 50% 50% 50%; left: 563px; top: 445px;\" id=\"eclipse_1\"></div>"
}
}
}
答案 0 :(得分:1)
不确定您想要什么以及要将哪些数据发送到Struts2操作。 这是使用Jquery向Struts2操作发送JSON数据的方法
var arr = { value1: 'value1', value2: 'value2'}; // any size data
$.ajax({
url: 'action URL',
type: 'POST',
data: JSON.stringify(arr),
contentType: 'application/json; charset=utf-8',
dataType: 'json'
success: function(response) {
alert(response);
}
});
JSON.stringify
方法将java脚本对象转换为JSON字符串,大多数当前浏览器提供此方法开箱即用,但对于旧方法,您可能需要其他方式,如json2.js等。Struts2已经提供了一个插件来处理和输出JSON数据,请查看json-plugin以获取有关它的更多详细信息。
请记住以下要点
result type="json"
并检查你的类路径上是否有json插件,确保你有。请看下面的问题,它会给你更详细的想法
答案 1 :(得分:0)
我建议你使用更高级别的插件(struts-jquery-plugin)。 它具有Ajax调用支持,这是您正在寻找的。
答案 2 :(得分:0)
嘿问题是你是直接发布对象数组。所以Struts2不知道要打电话的方法。像下面这样更改你的json数据。然后它会工作。
{"data":[{"id":"1","code":"111","name":"ddd"},
"id":"2","code":"222","name":"sss"},
{"id":"3","code":"333","name":"eee"}]}
然后在setter中读取对象
public void setData(List < Report > data) {
System.out.println("Setter Call Flow");
this.data = data;
}
其中Report是一个java类,包含id,code,name,因为它的成员有setter和getter。