【问题标题】:How to send JSON data from JSP page to action class in Struts2 using AJAX如何使用 AJAX 将 JSON 数据从 JSP 页面发送到 Struts2 中的操作类
【发布时间】:2013-10-11 02:02:03
【问题描述】:

我想在 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>"
    }
}
}

【问题讨论】:

标签: json jquery struts2


【解决方案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 插件,确保有。

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

【讨论】:

  • 我查看了给定的链接,我添加了有问题的代码。你有什么建议吗?
【解决方案2】:

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

【讨论】:

  • 我不同意你的观点,struts2-Jquery 插件提供了其他功能,虽然插件非常好但是如果你不想使用那里的标签,没有必要添加任何额外的依赖。
  • 是的。该插件提供了可能不适合所有项目的 UI 组件(树、选项卡、网格、自动完成器、进度条...)。还有用于链接、div 和表单的 Ajax 组件非常有用。如果你的项目完全基于 AJAX,我建议你使用这个(或类似的)组件。
【解决方案3】:

嘿问题是您直接发布对象数组。所以 Struts2 不知道调用哪个方法。更改您的 json 数据,如下所示。然后就可以了。

{"data":[{"id":"1","code":"111","name":"ddd"},
"id":"2","code":"222","name":"sss"},
{"id":"3","code":"333","name":"eee"}]}

然后在setter里面用object读取

public void setData(List < Report > data) {
System.out.println("Setter Call Flow");
this.data = data;

}

Report 是一个 java 类,其中包含 id、code、name,因为它是具有 setter 和 getter 的成员。

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 1970-01-01
    • 2014-09-30
    相关资源
    最近更新 更多