인프런 커뮤니티 질문&답변

kkt169님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문 목록 검색, 취소

주문 목록 검색 컨트롤러에서 @ModelAttribute가 적용된 orderSearch 질문

22.04.02 14:47 작성

·

278

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요!
주문 목록 검색 요청을 처리하는 OrderController의 orderList() 메서드 관련 질문이 있습니다.
 
제가 findOrders()내부 findAllByString() 로직을 이해한게 아니여서, orderList()메소드가 이런식으로 동작하는게 맞는지 궁금합니다.
 
이 메소드는 다음의 3가지 상황에 의해 호출 될 것 같은데요,
1. 상품 주문 화면에서 상품 주문 후, 주문을 처리하는 order() 메소드에 의한 리다이렉션 요청을 받을 때
2. 홈 화면에서 순수하게 주문 내역을 클릭하였을 때
3. 주문 내역 화면에서, 회원명 or 주문상태를 조건으로 하여 검색할 때
 
그래서 상황 1,2와 같은 경우에는 모든 주문 내역을 다 보여주고, 상황 3의 경우에는 조건에 따른 주문내역만을 보여주도록 동작해야 할 것 같습니다.
 
이때 실제 코드에서는 OrderService의 findOrders() 메소드 호출만으로 위 3가지 상황을 모두 커버하고 있는데요,
 
그렇게 되면 () 상황 1,2의 경우에는
orderList()의 @ModelAttribute orderSearch에 null이 대입되어 모든 주문 내역이 다 조회되는 것 같습니다.
그리고 상황 3의 경우에는 선택한 조건에 따른 orderSearch 객체가 form태그에 의해 요청파라미터로 념겨져와서,
orderList()의 파라미터 중 orderSearch가 받아 조건에 따른 주문 내역이 조회되는 것 같은데,
제가 맞게 이해한건지 궁금합니다.
 
그리고 특히 상황 3의 경우 선택한 회원명or주문상태에 따른 orderSearch객체를, form태그가 생성하여 보내주는 것이 맞는지 궁금합니다.
 
긴 질문 읽어주셔서 감사합니다!
 
 

답변 1

1

codesweaver님의 프로필 이미지

2022. 04. 06. 17:02

안녕하세요, kkt169 님! 공식 서포터즈 codesweaver 입니다.

상황 1,2의 경우 OrderSearch가 null이 된다기 보단 OrderSearch의 필드인 memberName과 orderStatus 가 null이 됩니다.

그래서 이를 service 등에서 null 인경우에 대한 처리등을 해야 합니다. 만약 폼에서 해당 값들이 넘어왔다면 null이 아닌 값들이 들어가 있을테니까요.

 

상황3.의 경우 form 태그가 생성하여 준다기 보단, 폼은 사용자가 입력한 값들을 일정한 양식에 맞게 서버에 요청하게 됩니다. 그 방법은 크게 GET, POST가 있는데, GET은 url에 폼값을 전달하고 POST는 http 바디에 담아 전달합니다. 그러면 스프링 프레임워크가 이러한 값들을 OrderSearch 객체를 생성하고 setter를 이용하여 값을 담게 됩니다. 

정리하면, 맞게 이해하셨고, OrderSearch는 스프링 프레임워크에서 생성합니다.

감사합니다.

kkt169님의 프로필 이미지

작성한 질문수

질문하기