쌓고 쌓다
Ajax data 여러개 넣어, @RequestBody로 여러개 받기? 본문
Ajax로 서버에 데이터를 전송하는 코드이다.
let memos = [];
let selectPlaces = [];
$.ajax({
...
data: JSON.stringify({"content": selectPlaces, "memos": memos}),
...
})
나는 이렇게 전송한 데이터를 서버에서 아래의 형태로 같이 받길 원했다.
@PostMapping("...")
public String makeSchedule(@RequestBody List<String> content,
@RequestBody List<String> memos) {
...
}
@RequestBody를 여러개 작성하여 받는 방법은 없다.
그래서 전달 받을 VO(Value Object)를 만들어 받는것이 올바른 방법이다.
물론 Map을 사용하여 Key, Value로 값을 받아도 가능하다.
@RequestBody Map<String, Object> data
data.get("memos");
data.get("content");
VO 클래스
@Getter
@Setter
@ToString
public class DataVO {
private List<Spot> content;
private List<String> memos;
}
Ajax에서 아래와 같이 보낸 데이터를 DataVO로 매핑할 수 있다.
{
"content" : "...",
"memos" : "..."
}
Controller단에서는 아래와 같이 받아 데이터를 처리할 수 있다.
@PostMapping("/...")
public String makeSchedule(@RequestBody ScheduleVO schedule) {
List<SpotDTO> content = schedule.getContent();
List<String> memos = schedule.getMemos();
System.out.println("schedule = " + schedule);
...
}
'프로그래밍 > spring' 카테고리의 다른 글
서블릿 컨테이너의 예외 처리, 오류 페이지 (0) | 2023.10.12 |
---|---|
[스프링 부트] 인터셉터 인증 체크 - 33 (0) | 2023.10.05 |
Cannot handle managed/back reference 'defaultReference': back reference type ... not compatible with managed type ... (0) | 2023.10.01 |
[스프링 부트] 회원 정보(세션)로 게시글 작성 - 32 (0) | 2023.10.01 |
HTML에서 날짜 입력 받아 서버에서 LocalDate로 받기 (0) | 2023.09.20 |
Comments