김영한 교수님의 스프링 입문편을 보고 정리한 노트이다. 절대 공유 및 배포 금지.
주로 요구되는 검증은 다음과 같다.
이러한 검증은 컨트롤러에서 이루어지게 된다. 클라이언트 딴에서 검증은 조작이 가능하므로 보안에 취약하다. 또, 서버만으로 검증하면 고객 사용성이 부족해진다. 결국 서버에 데이터를 보내야 검증이 가능하기 때문이다. 따라서 둘을 섞어서 사용하되, 최종적으로 서버 검증은 필수이다. API의 경우 API를 잘 명세해서 검증 오류를 API 응답 결과에 잘 남겨주어야 한다.
중요한 점은 잘못된 POST /add 요청에 대해 컨트롤러에서 검증 로직을 돌린 후, 사용자가 입력한 값을 유지한 채로 상품 등록 폼을 다시 보여줘야 한다는 것이다. 이를 위해 검증 로직 이후 상품 등록 폼에 사용자가 입력한 값이 담겨있는 모델을 포함하여 전달해줘야 한다.
바로 개발해보자.
ValidationItemControllerV1
그런데 상품 등록에 실패한 뒤 다시 화면을 렌더링했는데 별 다른 처리 없이도, 기존에 사용자가 입력했던 값들이 남아있다.
@ModelAttribute
를 사용했기 때문인데, @ModelAttribute
는 다음과 같이 동작한다.