인프런 커뮤니티 질문&답변
ModelAttribute를 받아오는 방식
작성
·
614
0
안녕하세요 강사님, 질문 드리겠습니다.
updateItemForm.html의 form태그에서 받는 object이름과 매칭되는 것이 아니라 그냥 아무 이름으로나 받아도 되는 거라면..
만약 ModelAttribute로 여러 개의 BookForm을 담아서 보내는 경우에는 이를 어떻게 구분할 수 있나요?
이렇게 애매한 부분이 발생한다면.. 그냥 Model로 받아서 해당 attribute를 가져와서 사용하는게 낫지 않나 하는 생각이 듭니다.
그리고, 저렇게 파라미터로 Model을 받지 않고 ModelAttribute를 받으면 해당 attribute말고 나머지 attribute는 사용할 수 없게 되는 건가요?
감사합니다!
답변 1
1
안녕하세요. 현강님
updateItemForm.html의 form태그에서 받는 object이름과 매칭되는 것이 아니라 그냥 아무 이름으로나 받아도 되는 거라면..
만약 ModelAttribute로 여러 개의 BookForm을 담아서 보내는 경우에는 이를 어떻게 구분할 수 있나요?
-> 스프링에서 지원하는 여러가지 방안이 있습니다. @ModelAttribute 여러개 라는 키워드로 검색해보시면 원하는 답을 찾으실 수 있을거에요.
중첩, 리스트 등등 다양한 방법일 지원합니다. 다음은 중접을 처리하는 예시입니다.
http://localhost:8080/multi?dataA.data=1&dataB.data=2
package com.example.demo;
import lombok.Data;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MultiController {
@RequestMapping("/multi")
public String go(@ModelAttribute("dataRoot") DataRoot dataRoot) {
System.out.println("dataRoot = " + dataRoot);
return "ok";
}
@Data
static class DataRoot {
private DataA dataA;
private DataB dataB;
}
@Data
static class DataA {
private String data;
}
@Data
static class DataB {
private String data;
}
}
그리고, 저렇게 파라미터로 Model을 받지 않고 ModelAttribute를 받으면 해당 attribute말고 나머지 attribute는 사용할 수 없게 되는 건가요?
-> 추가로 필요한 부분은 @RequestParam, Model model 등의 파라미터를 추가라 받아서 원하는데로 처리하면 됩니다.
감사합니다.






감사합니다~~