본 프로젝트 자료는 김영한님의 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고 제작됐음을 알립니다.
Bean Validation-groups 을 실제 개발을 시작할 때 잘 사용하지 않는다고 한다.
그 이유는 등록 시 폼에서 전달하는 데이터가 설계한 도메인 객체와 맞지 않다고 한다.
그래서 실제로 많이 사용되는게 Form 전송 객체 분리 원리를 사용해서 분할 시켜 작업한다.
폼 데이터 분리 전달에 대한 장단점
groups 와 어떠한 점이 다른지 사용하는 이유를 알아볼려고 한다.
일단 groups 사용을 위해 등록된 검증 코드를 제거
검증 코드를 삭제했으니 별도의 저장용 폼과 수정용 폼을 만들어 줘야 한다.
저장과 수정폼을 등록했으면 내부 로직들도 작동할 수 있게 정리해줘야 한다.
수정 전
수정 후
수정 전
수정 후
@ModelAttribute 는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form) 를 다룰 때 사용한다고 한다.
PostMan 을 사용해서 테스트 해볼려고 한다.
PostMan
지금 오류같은 경우 HttpMessageConverter 에서 요청 JSON을 ItemSaveForm 객체로 생성하는데 실패해서 그렇다. 원인은 price의 경우 Integer 로 숫자로만 받을 수 있는데 문자가 들어와 Validation 에서 정보를 받지 못해서 생긴 오류라고 보면 된다.
위 같은 오류는 설정한 오류 범위 이내로 틀린 정보를 입력했기에 오류 정보를 출력해서 보여주는 모습을 확인할 수 있다. 전부 다 사용자가 입력한 결과 값으로 출력해주고 있다.
실제 개발할 때는 이 객체들을 그대로 사용하지 말고, 필요한 데이터만 뽑아서 별도의 API 스펙을 정의하고 그에 맞는 객체를 만들어서 반환해야 한다.