브라우저의 Javascript에서 Ajax를 사용하여 spring mvc 컨트롤러로 어레이 데이터 전달
웹 브라우저의 Javascript에서 AJAX를 사용하여 Spring MVC 컨트롤러로 배열을 전달하고 싶습니다.
자바스크립트에서, 나는.
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);
}
});
자바에서는 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?
}
이를 위한 올바른 방법은 무엇입니까?감사합니다!
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);
}
});
그리고 자바 측(스프링 3)에서는 이 방법이 다음과 같이 매핑된다고 가정합니다./myurl:
public String controllerMethod(@RequestParam(value="myArray[]") Integer[] myArray){
....
}
저는 다음과 같은 것들도 효과가 있을 것이라고 믿습니다.
public String controllerMethod(@RequestParam(value="myArray[]") List<Integer> myArray){
....
}
스프링은 제본하는 방법을 알아낼 수 있을 정도로 똑똑합니다.
여러 어레이의 경우 다음 명령 개체를 사용할 수 있습니다.
public class MyData {
private List<Integer> firstArray;
private List<Integer> secondArray;
private List<Integer> thirdArray;
...
...
}
그러면 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);
}
});
Java 측에서는 다음을 사용하여 바인딩할 수 있습니다.@ModelAttribute:
public String controllerMethod(@ModelAttribute(value="myData") MyData myData) throws ParseException {
....
}
편집
변경 내용@RequestParam사용할 주석myArray[]의 대신에myArray이 답변이 처음 게시된 후 봄에 이 변경이 이루어진 것으로 보이기 때문입니다.
데이터가 문자열에서 구문 분석된다는 점을 염두에 두고 Spring MVC 컨트롤러에 이러한 데이터를 전달하는 것은 매우 간단합니다.따라서 컨트롤러에서 어레이/목록을 가져오려면 어레이의 문자열화된 버전을 전달합니다.
public String method(
@RequestParam(value = "stringParam") String stringParam,
@RequestParam(value = "arrayParam") List<String> arrayParam) {
...
}
jQuery를 사용하는 해당 Javascript는 다음과 같습니다.
$.post("/urlToControllerMethod",
{
"stringParam" : "test",
"arrayParam" : [1, 2, 3, "test"].toString()
}
);
참고: 매개 변수 유형
List<String> arrayParam
어레이 등가물로 대체할 수도 있습니다.
String[] arrayParam
비빈 팔리아스는 당신이 사용하지 않는 한 작동하지 않습니다.myArray[]
public String controllerMethod(@RequestParam(value="myArray[]") Integer[] myArray){
...
}
만약 당신이 스프링 mvc 4를 사용한다면 아래가 가장 좋은 접근법이 될 것입니다.
제이쿼리 코드
var dataArrayToSend = []; dataArrayToSend.push("a"); dataArrayToSend.push("b"); dataArrayToSend.push("c");
아약스 코드
$.ajax({ contentType: "application/json", type: "POST", data: JSON.stringify(dataArrayToSend), url: "/appUrl", success: function(data) { console.log('done'); }, error: function(jqXHR, textStatus, errorThrown) { console.log('error while post'); }
});
스프링 컨트롤러 코드
@RequestMapping(value = "/appUrl", method = RequestMethod.POST) public @ResponseBody void yourMethod(@RequestBody String[] dataArrayToSend) { for (String data : dataArrayToSend) { System.out.println("Your Data =>" + data); } }
이것이 당신에게 도움이 되는지 아닌지 확인하세요!
건배!
완벽하게 테스트된 솔루션
$.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);
}
});
@RequestMapping(value = "/save/", method = RequestMethod.POST)
public String controllerMethod(@RequestParam(value="myArray[]") List<Integer> myArray){
System.out.println("My Array"+myArray.get(0));
return "";
}
저는 결국 이것을 하고 그것은 작동합니다.
Js 단위로,
var a = [];
a[0] = 1;
a[1] = 2;
a[2] = 3;
$.ajax({
type : "POST",
url : "/myurl",
data : "a="+a, //multiple array, just add something like "&b="+b ...
success : function(response) {
// do something ...
},
error : function(e) {
alert('Error: ' + e);
}
});
java 측, 데이터를 수신할 클래스 가져오기, lombok
@Setter @Getter 공용 클래스 MyData {privateArrayLista;
}
그 다음에 컨트롤러에서.
@RequestMapping(value = "/repair_info", method = RequestMethod.POST)
public ModelAndView myControl(MyData myData) {
// get data with myData object
}
언급URL : https://stackoverflow.com/questions/17560258/pass-array-data-from-javascript-in-browser-to-spring-mvc-controller-using-ajax
'programing' 카테고리의 다른 글
| 시스템() 명령이 완료될 때까지 기다리지 않는 방법이 있습니까?(c) (0) | 2023.07.25 |
|---|---|
| express.js에서 요청을 발생시키는 도메인을 어떻게 얻습니까? (0) | 2023.07.25 |
| Python의 다중 선형 회귀 분석 (0) | 2023.07.20 |
| MySQL과 Oracle DB의 차이점 (0) | 2023.07.20 |
| 매개 변수 접두사 ':' 뒤에는 공백을 사용할 수 없습니다. (0) | 2023.07.20 |