이 코드 같은 동작 수행하는거 맞지요?
317
3 asked
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "validation/v4/addForm";
}
이 코드랑
@GetMapping("/add")
public String addForm(@ModelAttribute Item item) {
return "validation/v4/addForm";
}
이 코드 같은 동작 수행하는 거 맞나요??
저렇게 바꿔도 될거같아서요.
Answer 2
1
안녕하세요. 윤제리님, 공식 서포터즈 David입니다.
.
Model에 item을 담아서 뷰에 전달하는 것만 동일합니다.
첫번째 코드는 item을 내부에서 생성해서 model에 전달하고
두번째 코드는 item을 외부로부터 전달받아서 model에 전달합니다.
따라서 같은 동작을 수행한다고 보기 어렵습니다.
.
감사합니다.
0
제가 인강보면서 이해하기로는 @ModelAttribute Item 을 해주면 내부적으로
Item item = new Item(); item.setItemName(itemName); item.setPrice(price); item.setQuantity(quantity);
model.addAttribute("item", item);
이렇게 작동한다고 이해해서요.
다른건가요? ㅠㅠ
0
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "validation/v4/addForm";
}
위 코드에서는 생성된 item의 상태를 변경하는 부분(setter 메서드들)은 빠져있습니다.
이에 반해 @ModelAttribute는 외부에서 넘어온 값을 Item에 넣어주기 위해
내부적으로 item을 생성(new Item())하고 setter 메서드를 통해 넘어온 값을 item의 상태로 변경하게 됩니다.
외부에서 넘어온 값을 Item 객체로 받는 것과 컨트롤러 메서드 내에서 Item 객체를 생성하는 것은 다른 동작입니다.
물론 Item 객체를 생성하는 것, 생성된 Item 객체를 Model에 담아주는 것만 놓고보면 같은 동작입니다. 하지만 이 동작만을 위해 컨트롤러 메서드의 파라미터에 Item 객체를 쓴 것은 아닙니다.
한가지 질문드려도 될까요?
@GetMapping("/add")
public String addForm(Model model) {
model.addAttribute("item", new Item());
return "validation/v4/addForm";
}
만약 @ModelAttribute를 쓴 코드와 위 코드가 동일한 역할을 한다면 @ModelAttribute와 Item 객체를 파라미터로 받지 않을 때 어떻게 사용자가 전달한 값을 받아서 addForm 화면에 전달할 수 있을까요?
이미지 업로드와 db 트랜잭션 묶는법
0
40
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
45
2
MessageSourceTest 코드
0
46
1
인터셉터 에러 설정
0
47
1
resolveArgument()메서드 질문
0
54
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
52
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
130
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
86
3
pdf 오타 문의
0
54
1
ItemUpdateForm 검증 관련 질문입니다.
0
46
1
22page 링크 주소 변경
0
55
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
52
1
섹션3번 수업에 대한 질문입니다.
0
78
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
84
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
63
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
140
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
62
1
톰캣 에러 페이지가 안보입니다.
0
98
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
80
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
116
2
ApiExceptionController 질문드립니다.
0
62
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
64
1
MemberRepository 필드의 fianl 선언 유무
0
83
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
57
1

