Alf*_*ong 20 javascript arrays ajax jquery spring-mvc
我想使用AJAX将数组从Web浏览器中的javascript传递给Spring MVC控制器
在javascript中,我有
var a = [];
a[0] = 1;
a[1] = 2;
a[2] = 3;
// how about multiple arrays as well?
$.ajax({
type : "POST",
url : "/myurl",
data : //not sure how to write this, ("a="+a), ?
success : function(response) {
// do something ...
},
error : function(e) {
alert('Error: ' + e);
}
});
Run Code Online (Sandbox Code Playgroud)
在Java中,我想创建一个从AJAX接收数据的类,并创建一个接收数据的类
package com.amazon.infratool.ui;
import lombok.Getter;
import lombok.Setter;
@Setter @Getter
public class RepairInfomationParameters {
//how to write this variable?
List<String> a = null; // is it something like this?
}
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?谢谢!
Viv*_*ath 32
你可以从JavaScript方面做到这一点:
$.ajax({
type : "POST",
url : "/myurl",
data : {
myArray: a //notice that "myArray" matches the value for @RequestParam
//on the Java side
},
success : function(response) {
// do something ...
},
error : function(e) {
alert('Error: ' + e);
}
});
Run Code Online (Sandbox Code Playgroud)
然后在Java端(在Spring 3中),假设此方法通过以下方式映射/myurl
:
public String controllerMethod(@RequestParam(value="myArray[]") Integer[] myArray){
....
}
Run Code Online (Sandbox Code Playgroud)
我相信以下内容也会奏效:
public String controllerMethod(@RequestParam(value="myArray[]") List<Integer> myArray){
....
}
Run Code Online (Sandbox Code Playgroud)
Spring很聪明,可以弄清楚如何进行绑定.
对于多个阵列,您可能只想拥有一个命令对象:
public class MyData {
private List<Integer> firstArray;
private List<Integer> secondArray;
private List<Integer> thirdArray;
...
...
}
Run Code Online (Sandbox Code Playgroud)
然后在JavaScript方面:
$.ajax({
type : "POST",
url : "/myurl",
data : {
myData: {
"firstArray": firstArray,
"secondArray": secondArray,
"thirdArray": thirdArray
}
},
success : function(response) {
// do something ...
},
error : function(e) {
alert('Error: ' + e);
}
});
Run Code Online (Sandbox Code Playgroud)
在Java端,您可以使用@ModelAttribute
以下命令进行绑定:
public String controllerMethod(@ModelAttribute(value="myData") MyData myData) throws ParseException {
....
}
Run Code Online (Sandbox Code Playgroud)
编辑
更改了@RequestParam
注释以使用myArray[]
而不仅仅是myArray
,因为此更改似乎是在首次发布此答案后在Spring中进行的.
当您牢记要从字符串中解析数据时,将此类数据传递给Spring MVC控制器非常简单。因此,如果要在控制器中获取数组/列表,请传递该数组的字符串化版本:
public String method(
@RequestParam(value = "stringParam") String stringParam,
@RequestParam(value = "arrayParam") List<String> arrayParam) {
...
}
Run Code Online (Sandbox Code Playgroud)
与jQuery对应的javascript就像:
$.post("/urlToControllerMethod",
{
"stringParam" : "test",
"arrayParam" : [1, 2, 3, "test"].toString()
}
);
Run Code Online (Sandbox Code Playgroud)
注意:参数类型
List<String> arrayParam
Run Code Online (Sandbox Code Playgroud)
可以用等效的数组替换
String[] arrayParam
Run Code Online (Sandbox Code Playgroud)
除非你使用,否则Vivin Paliath不起作用 myArray[]
public String controllerMethod(@RequestParam(value="myArray[]") Integer[] myArray){
...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
55225 次 |
最近记录: |