쌓고 쌓다

Ajax data 여러개 넣어, @RequestBody로 여러개 받기? 본문

프로그래밍/spring

Ajax data 여러개 넣어, @RequestBody로 여러개 받기?

승민아 2023. 10. 4. 16:28

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);
    ...
}

 

 

Comments