使用 jQuery AJAX 调用将数组发送到 Struts2 操作
Send array to Struts2 action with jQuery AJAX call
到目前为止,我已经能够通过 AJAX 调用将一个简单的字符串发送到 Struts2 操作 class。这次我需要做同样的事情,但是使用一个字符串数组,所以我改变了我的代码:
1. AJAX呼叫:
var test = [1, 2, 3, 4, 5];
$.ajax({
method: "POST",
url: "createexperiment4.action",
data: { test : test },
success:
function()
{
window.location = "loadexperiments.action";
}
});
2。 CreateExperiment4Action.java:
private String[] test;
[...]
public void setTest(String[] test)
{
this.test = test;
}
但是,数据未到达操作类。此外,我不断收到此警告,这当然是我问题的关键:
WARNING: Parameter [test[]] didn't match acceptedPattern pattern!
也许这是某种配置问题?
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";
}
});
到目前为止,我已经能够通过 AJAX 调用将一个简单的字符串发送到 Struts2 操作 class。这次我需要做同样的事情,但是使用一个字符串数组,所以我改变了我的代码:
1. AJAX呼叫:
var test = [1, 2, 3, 4, 5];
$.ajax({
method: "POST",
url: "createexperiment4.action",
data: { test : test },
success:
function()
{
window.location = "loadexperiments.action";
}
});
2。 CreateExperiment4Action.java:
private String[] test;
[...]
public void setTest(String[] test)
{
this.test = test;
}
但是,数据未到达操作类。此外,我不断收到此警告,这当然是我问题的关键:
WARNING: Parameter [test[]] didn't match acceptedPattern pattern!
也许这是某种配置问题?
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";
}
});