web/Spring

spring에서 List 또는 Array 데이터를 Controller에서 받기

반응형

컨트롤러에서 List<>데이터를 받아서 매핑하기 위해서 필요한과정을 정리해본다.



1. List<PersonDto> 데이터를 받기


먼저 controller에서 @RequestBody List<PersonDto>를 받도록 설정한다. 

그리고 ajax를 통해서 요청하는 부분에서 다음과 같이 진행한다.


 

1
2
3
4
5
6
7
let data = [{'name':'cjung', 'age':30}, {'name':'wedul', 'age':28}];
 
$.ajax({
    url:....,
    type:...,
    param: JSON.stringify(data);
});
cs






2. DTO객체 안에 LIST 변수에 데이터를 매핍 하고자 하는경우


기존에 습관대로 진행을 다음과 같이 먼저 해보자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// javascript
let param = [{ name : 'wedul', age: 1}, {name:'dd', age:2}];
 
// UserDto
private String name;
private int age;
 
// UserDataList
public UserDataList {
 List<UserDto> userDatas;
 
}
 
 
// UserController
public Map<String, Object> getUsers(@ModelAttribute UserDataList users);
cs




Property referenced in indexed property path is neither an array nor a List nor a Map ...

다음과 같은 에러가 발생하고 

formData를 확인하면

param[0]["name"] = wedul
param[0]["age"]=1

과 같이 되어있는것을 확인할 수 있다.

이를 해결하기 위해서는 다음과  json 데이터를 만들어서 전송한다.



1
2
3
var param = {}; 
param['userDatas[' + index +'].name'] = 'yhkim' ;
param['userDatas[' + index +'].age'] = 1; 
cs


반응형

'web > Spring' 카테고리의 다른 글

java.lang.Error: Unresolved compilation problem  (0) 2018.05.27
Mybatis String을 ParameterType으로 넘길때  (0) 2018.05.27
UriComponents 클래스  (0) 2016.12.27
Mybatis의 동적 SQL  (0) 2016.12.27
STS의 github 연동  (0) 2016.12.21