使用jQuery AJAX调用将数组发送到Struts2动作

Joã*_*des 3 ajax jquery struts2

到目前为止,我已经能够通过AJAX调用向Struts2动作类发送一个简单的字符串.这次我需要做同样的事情,但是使用String数组,所以我改变了我的代码:

1. AJAX电话:

var test = [1, 2, 3, 4, 5];

$.ajax({
    method: "POST",
    url: "createexperiment4.action",
    data: { test : test },
    success:
        function()
        {
            window.location = "loadexperiments.action";
        }
});
Run Code Online (Sandbox Code Playgroud)

2. CreateExperiment4Action.java:

private String[] test;

[...]

public void setTest(String[] test)
{
    this.test = test;
}
Run Code Online (Sandbox Code Playgroud)

但是,数据未到达动作calss.此外,我一直收到这个警告,这当然必须是我的问题的关键:

警告:参数[test []]与acceptedPattern模式不匹配!

也许这是某种配置问题?

Mus*_*usa 9

jQuery.ajax的数组的默认序列化[]在名称后附加一个(例如test[]=1&test[]=2),而像PHP这样的框架识别这种格式,而struts则不然.为了防止这种行为,请将traditional: true,配置添加到您的ajax请求中,这将提供类似的功能test=1&test=2.

var test = [1, 2, 3, 4, 5];
$.ajax({
    method: "POST",
    url: "createexperiment4.action",
    data: { test : test },
    traditional: true,
    success:
        function()
        {
            window.location = "loadexperiments.action";
        }
});
Run Code Online (Sandbox Code Playgroud)