코드 그라데이션

오류 코드와 메시지 처리 (4) 본문

Spring/Validation

오류 코드와 메시지 처리 (4)

완벽한 장면 2024. 2. 26. 22:04

먼저 이렇게 찍어보면

두 가지 메시지 코드를 나타낸다.

 

두 번째 테스트 찍어보면

결과로 4개를 출력한다.

가장 디테일한 게 첫 번째로, 가장 포괄적인게 마지막으로 나온다.

 

전체 코드

package hello.itemservice.validation;

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.validation.DefaultMessageCodesResolver;
import org.springframework.validation.MessageCodesResolver;

import static org.assertj.core.api.Assertions.assertThat;

public class MessageCodesResolverTest {

    MessageCodesResolver codesResolver = new DefaultMessageCodesResolver();
    @Test
    void messageCodesResolverObject() {
        String[] messageCodes = codesResolver.resolveMessageCodes("required","item");
        assertThat(messageCodes).containsExactly("required.item", "required");
    }

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

 

MessageCodesResolver

 

DefaultMessageCodesResolver의 기본 메시지 생성 규칙

 

동작 방식

 

 

 

오류 메시지 출력

타임리프 화면을 렌더링 할 때 th:errors 가 실행된다. 

만약 이때 오류가 있다면 생성된 오류 메시지 코드를 순서대로 돌아가면서 메시지를 찾는다. 

그리고 없으면 디폴트 메시지를 출력한다.

 

728x90
Comments