본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : 구체적에서 덜 구체적으로 오류 코드 메시지 처리하기

by 오주현 2022. 2. 11.
반응형

강의에서 핵심은 구체적 → 덜 구체적으로 만들어 주는 것이 핵심이라고 했다. 그것을 강의에서 레벨로 표현하여 알려주었는데 아래와 같다.

 

#==FieldError== 
#Level1
required.item.itemName=상품 이름은 필수입니다.

#Level2 - 생략

#Level3 타입을 알 수 있다.
required.java.lang.String = 필수 문자입니다.

#Level4
required = 필수 값 입니다.

레벨 1이 먼저 매칭되고 1이 없다면 그 다음 2가 매칭이 된다. 그 다음이 3, 4순으로 매칭이 되게 된다. 만드는 순서는 4부터 만들지만 매칭되는 순서는 1부터 매칭이 되는 것이다.

 

검증 오류 메시지가 발생하면 레벨 1순으로 MessageSource에서 찾게되는 것이다. 이렇게 되면 크게 중요하지 않은 오류 메시지는 기존에 정의된 것을 그냥 재활용하면 된다고 한다.

 

if (!StringUtils.hasText(item.getItemName())) { //넘어온 글자가 없으면
    bindingResult.rejectValue("itemName", "required");
}

위 코드를 간단하게

 

ValidationUtils.rejectIfEmptyOrWhitespace(bindingResult, "itemName", "required"); 아래와 똑같다.

이렇게 줄여줄 수 있다. 다만 제공하는 기능은 Empty, 공백 같은 단순한 기능만 제공한다.

 

강의 자료를 토대로 정리하자면 rejectValue()를 호출하고 MessageCodesResolver가 required(위 코드 참고)를 사용해 검증 오류 코드로 메시지 코드를 생성하고 new FieldError()를 생성하면서 메시지 코드를 보관하고 th:errors에서 메시지 코드들로 메시지를 순서대로 메시지에서 찾고 노출시키는 것이다.

 


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글