관리 메뉴

샐님은 개발중

[Spring-boot] MessageCodesResolver 오류 검증 본문

스프링 MVC 2편 - 인프런 김영한/섹션 4 ,5- 검증1,2 - Validation

[Spring-boot] MessageCodesResolver 오류 검증

샐님 2023. 7. 13. 16:47
728x90
반응형

MessageCodesResolver 란

   객체명과 필드명을 조합해 메세지가 있는 지 확인 후 없으면 좀 더 범용적인 메세지를 선택하도록 하는 기능

 

#더 디테일한 키 값이 있을 경우
# 디텔일한 키 가 우선순위가됨
#Level 1
required.item.itemName = 상품 이름은 필수입니다.

#Level1 2
required=필수 값 입니다.

 

동작 원리 

  1.  regjectValue(), reject() 내부에서  MessageCodesResolver 를 사용해서 코드 생성. 

  2. FieldError, ObjectError 생성자에 여러 오류 코드 가짐.

  3.  MessageCodesResolver 를 통해 생성된 순서대로 오류 코드 보관

  4. 타임리프 화면을 렌더링 할 때 th:errors 가 실행되고 이해 오류가 있으면 오류 메세지 코드 순서대로 돌면서 메세지를 찾고 없으면 디폴트 메세지 출력.

 

@Test
void messagesCodesResolverObject(){
    String[] messageCodes = codesResolver.resolveMessageCodes("required", "item");
    for(String messageCode:messageCodes){
        System.out.println("MessageCode ="+messageCode);
    }
}
/**
*MessageCode =required.item
*MessageCode =required
*/

@Test
void messageCodesResolverField(){
    String[] messageCodes = codesResolver.resolveMessageCodes("required","item","itemName",String.class);
    Assertions.assertThat(messageCodes).containsExactly(
            "required.item.itemName",
            "required.itemName",
            "required.java.lang.String",
            "required");
}

 

 

728x90
반응형