validation 오픈!
Post -> add 저장 했을 때 .
ModelAttibute 자동으로 모델 반환해준다!
화면처리
이런 기능도 있다.
위에 기능은 중복도 많고 실용적이지 않다 개선 작업시작
검증처리 오류 첫번째 방법
아이템 객체의 바인딩 결과를 담기 때문에 바로 모델 객체 뒤에 와야된다.
스프링이 제공하는 검증 오류를 보관하는 객체
BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생해도 컨트롤러가
호출된다!
그러나 오류가 발생하는경우 사용자가 입력한 값이 사라지니
이걸 해결해야됨.
오류가 나도 사용자 입력값이 유지된다.
프로퍼티 설정
오류코드를 좀더 단순화 할순 없을 까?
target은 진짜아이템 객체가..
bindingResult가 가지고 있는 것들
bindingResult 함수로 새롭게 단순화 해보자
V3에서 해줬던 역활을 resultValue가 해준다.
범용성 있게 작성하거나 세밀하게 작성하거나
여러가지 장단 점이 있다
이런 방식은 너무많은 코드가 생산 되는데.
범용성있게 작성 -> 메시지 추가만으로 쉽게
정리 해보면 -> 정확한거 찾기 - > 아니면 비슷한 범용성있는걸로...
스프링은 MessageCondesResolver라는 기능을 지원해 좀더 편리하게 사용하게 한다.
에러코드를 넣으면 여러개의 값을 반환해줌
순서대로 반환해준다.
내용이 많아서 붙여넣기.. 흠 어렵긴 하다..
핵심은 구체적인 것 -> 덜 구체적인 것.
모든 오류코드에 대해 메세지를 다정의하면 관리가 힘듬.
크게 안중요하다? 범용성 메세지 정말 꼭 필요할 대 구체적으로 적어서 사용
이런식으로 .. 주석처리를 하면 최종 가장 범용성이 있는 코드로 가게 된다.
밑에 코드를 한줄로 축약해주는 벨리데이션유틸즈
스프링이 직접 만든 오류 메시지 처리
검증오류 코드는 2가지로 나눔
개발자가 직접 설정한 오류코드 - >resultValue()
스프링이 직접 검증오류에 추가 하는경우 (주로 타입정보 불일치)
이런경우
추가해주자..
글로벌설정