스프링 MVC-11(검증)

존스노우·2022년 2월 19일
0

SPRING-MVC

목록 보기
10/18

검증

프로젝트 설정

validation 오픈!

검증 처리

검증 로직 개발

Post -> add 저장 했을 때 .

ModelAttibute 자동으로 모델 반환해준다!

화면처리

이런 기능도 있다.

검증로직 V2!

위에 기능은 중복도 많고 실용적이지 않다 개선 작업시작

BindingResult1

검증처리 오류 첫번째 방법

아이템 객체의 바인딩 결과를 담기 때문에 바로 모델 객체 뒤에 와야된다.

BindingResult2

스프링이 제공하는 검증 오류를 보관하는 객체

BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생해도 컨트롤러가
호출된다!

그러나 오류가 발생하는경우 사용자가 입력한 값이 사라지니

이걸 해결해야됨.

FieldError , ObjectError

오류가 나도 사용자 입력값이 유지된다.

오류 코드와 메세지 관리 1


프로퍼티 설정

오류 코드와 메시지 처리 2

오류코드를 좀더 단순화 할순 없을 까?

target은 진짜아이템 객체가..

bindingResult가 가지고 있는 것들

bindingResult 함수로 새롭게 단순화 해보자

V3에서 해줬던 역활을 resultValue가 해준다.

오류 코드와 메시지 처리 3

범용성 있게 작성하거나 세밀하게 작성하거나

여러가지 장단 점이 있다

이런 방식은 너무많은 코드가 생산 되는데.

범용성있게 작성 -> 메시지 추가만으로 쉽게

정리 해보면 -> 정확한거 찾기 - > 아니면 비슷한 범용성있는걸로...

스프링은 MessageCondesResolver라는 기능을 지원해 좀더 편리하게 사용하게 한다.

오류 코드와 메시지 처리 4

에러코드를 넣으면 여러개의 값을 반환해줌

순서대로 반환해준다.


내용이 많아서 붙여넣기.. 흠 어렵긴 하다..

오류 코드와 메시지 처리 5

핵심은 구체적인 것 -> 덜 구체적인 것.

모든 오류코드에 대해 메세지를 다정의하면 관리가 힘듬.

크게 안중요하다? 범용성 메세지 정말 꼭 필요할 대 구체적으로 적어서 사용

이런식으로 .. 주석처리를 하면 최종 가장 범용성이 있는 코드로 가게 된다.

밑에 코드를 한줄로 축약해주는 벨리데이션유틸즈

오류 코드와 메시지 처리 6

스프링이 직접 만든 오류 메시지 처리

검증오류 코드는 2가지로 나눔

개발자가 직접 설정한 오류코드 - >resultValue()
스프링이 직접 검증오류에 추가 하는경우 (주로 타입정보 불일치)

이런경우

추가해주자..

validator 분리 1

validator 분리 2

글로벌설정

profile
어제의 나보다 한걸음 더

0개의 댓글