0

我想在 jquery 中使用 ajax 将 json 数据从 jsp 页面传输到操作类。以下是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) {
    }
});

以下是动作类代码:

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>"
    }
}
}
4

3 回答 3

1

不确定您到底想要什么以及您想要将什么数据发送到您的 Struts2 操作。这是使用 Jquery 将 JSON 数据发送到 Struts2 操作的方法

jQuery

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-script 对象转换为 JSON 字符串,当前大多数浏览器都提供此方法开箱即用,但对于旧的,您可能需要其他方法,如 json2.js 等。

Struts2 已经为您提供了一个插件来处理输入和输出 JSON 数据,请查看json-plugin以获取有关它的更多详细信息。

请牢记以下几点

  • 您应该定义您的操作result type="json"并检查您的类路径中是否有 json 插件,确保有。

请看下面的问题,这会给你更详细的想法

于 2013-10-04T07:01:57.263 回答
0

我建议你使用更高级的插件(struts-jquery-plugin)。它具有您正在寻找的 Ajax 调用支持。

于 2013-10-04T07:21:34.620 回答
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 的成员。

于 2014-05-11T15:35:43.257 回答