如何使用 jQuery Ajax 将 javascript 数组发送到 struts 操作
How to send javascript array to struts action by using jQuery Ajax
我是 Struts 的新手 2. 我想使用 jQuery [=29] 将 javascript 数组发送到 Struts 操作 class =] 请求。
警报工作正常,execute()
不工作。
当我把 System.out.println("language : "+ language);
放在 execute()
方法中时,输出是
language : 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");
}
});
这是我的行动class
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";
}
要将 JSON 与 Struts2 一起使用,您最好的选择是导入 Struts2 JSON plugin.
然后,
- 当公开数据 从 操作 到 JSP 时,您将获得自动 JSON 转换,通过使用 Json 结果 as described here,但是
- 您需要在拦截器堆栈中包含 Json 拦截器 以进行 JSON 从 从 JSP到的动作,as described here and here.
Jquery 使用 $.param
internally when doing ajax request with $.ajax
.
序列化作为参数发送的数据
数据应设置为整数数组或以逗号分隔的整数列表的字符串,这样 jQuery 可以在发送请求之前正确序列化它。
您只能通过 traditional
设置将数组参数发送到 struts2,因为 struts 使用类型转换来填充 属性 使用键作为参数名称的操作.
因此,该数组应该是原始整数数组,但您的数组包含其他不是原始整数的对象。
为了演示,您可以查看此 demo 以了解如何获取参数值并以与 $.ajax
.
相同的方式对其进行序列化
Struts2 也可以通过默认类型转换来转换包含逗号分隔值的字符串。例如,您可以看到 how checkbox list values are passed to struts action.
我是 Struts 的新手 2. 我想使用 jQuery [=29] 将 javascript 数组发送到 Struts 操作 class =] 请求。
警报工作正常,execute()
不工作。
当我把 System.out.println("language : "+ language);
放在 execute()
方法中时,输出是
language :
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");
}
});
这是我的行动class
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";
}
要将 JSON 与 Struts2 一起使用,您最好的选择是导入 Struts2 JSON plugin.
然后,
- 当公开数据 从 操作 到 JSP 时,您将获得自动 JSON 转换,通过使用 Json 结果 as described here,但是
- 您需要在拦截器堆栈中包含 Json 拦截器 以进行 JSON 从 从 JSP到的动作,as described here and here.
Jquery 使用 $.param
internally when doing ajax request with $.ajax
.
数据应设置为整数数组或以逗号分隔的整数列表的字符串,这样 jQuery 可以在发送请求之前正确序列化它。
您只能通过 traditional
设置将数组参数发送到 struts2,因为 struts 使用类型转换来填充 属性 使用键作为参数名称的操作.
因此,该数组应该是原始整数数组,但您的数组包含其他不是原始整数的对象。
为了演示,您可以查看此 demo 以了解如何获取参数值并以与 $.ajax
.
Struts2 也可以通过默认类型转换来转换包含逗号分隔值的字符串。例如,您可以看到 how checkbox list values are passed to struts action.