【问题标题】:How to send javascript array to struts action by using jQuery Ajax如何使用 jQuery Ajax 将 javascript 数组发送到 struts 动作
【发布时间】:2017-07-06 20:47:54
【问题描述】:

我是 Struts 2 的新手。我想通过使用 jQuery AJAX 请求将 javascript 数组发送到 Struts 操作类。
警报工作正常,execute() 不工作。
当我将System.out.println("language : "+ language); 放入execute() 方法时,输出为

语言:null.

var langArr = [];
    $("#language").each(function()
    {
      var selectedLang = $("select").val();
      var selectedValues = $(this).val();
      langArr.push(selectedValues);
     });
    alert("Languages : " + langArr);

    $.ajax({
        method: "POST",
        url: "getProjectPost",
        data: { "language" : langArr },
        dataType : "json",
        traditional: true,
        success:
            function()
            {
             alert("Success");
            },
        error: 
           function()
            {
             alert("Error");
            }
    });

这是我的动作课

public class ProjectPostAction {

    private int[] language;

    public final int[] getLanguage() {
        return language;
    }

    public final void setLanguage(int[] language) {
        this.language = language;
    }

    public String execute() throws Exception {          
           System.out.println("language : "+ language[0]);
           return "success";    
    }

【问题讨论】:

  • 警报中打印的内容是什么?

标签: java jquery ajax struts2 type-conversion


【解决方案1】:

当使用$.ajax 进行ajax 请求时,Jquery 在内部使用$.param 序列化作为参数发送的数据。

数据应设置为整数数组或以逗号分隔的整数列表的字符串,以便 jQuery 可以在与请求一起发送之前正确序列化它。

您只能使用traditional 设置向struts2 发送数组参数,因为struts 使用类型转换来使用键作为参数名称来填充操作的属性。

因此,该数组应该是一个原始整数数组,但您的数组包含其他不是原始整数的对象。

为了演示,您可以查看此 demo 以了解如何获取参数值并以与 $.ajax 相同的方式对其进行序列化。

Struts2 还可以通过默认类型转换来转换包含逗号分隔值的字符串。例如你可以看到how checkbox list values are passed to struts action

【讨论】:

    【解决方案2】:

    要将 JSON 与 Struts2 一起使用,最好的选择是导入 Struts2 JSON plugin

    那么,

    1. 通过使用 Json Result as described here动作向 JSP 公开数据时,您将获得自动 JSON 转换,但是
    2. 您需要将 Json Interceptor 包含在您的拦截器堆栈中,以便将 JSON 转换 JSP 操作,@ 987654323@和here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多