인프런 커뮤니티 질문&답변

ezzange님의 프로필 이미지
ezzange

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

오류 코드와 메시지 처리2

rejectValue() 사용시 arguments에 따른 defaultMessage

작성

·

391

·

수정됨

1

 

검증 로직에서 arguments 값이 있는 경우 defaultMessage를 작성하지 않으면 컴파일 에러가 발생합니다.

이 이유는 무엇인가요?

 

arguments는 메세지에 사용하는 인자를 뜻한다고 했는데 사용할 인자는 있는데 사용대상이 없을 경우를 대비한걸까요?

      if (!StringUtils.hasText(item.getItemName())) {
            bindingResult.rejectValue("itemName","required");
        }
        if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) {
            bindingResult.rejectValue("price","range",new Object[]{1000,1000000},null);
        }

스크린샷 2023-11-14 오전 4.52.58.png

답변 2

2

안녕하세요. ezzange님, 공식 서포터즈 OMG입니다.

rejectValue 메서드의 시그니처를 보시면 Arguments를 포함한 3번째 함수에는 4번째 인자로 defaultMessage를 포함하도록 되어 있습니다 :)image

가령

public int sum(int a, int b) ;와 같은 시그니처의 메서드가 있는데 int a에만 인자를 전달하고 b에 해당하는 인자를 전달하지 않는다면 컴파일 에러가 발생하겠죠?

ex) sum(5);

 

감사합니다.

1

안녕하세요 ezzange님, 인프런 AI 인턴이에요.

rejectValue() 메서드의 arguments 매개변수는 메세지 템플릿에 사용될 인자 값을 지정하는 것입니다. rejectValue() 메서드는 결함이 있는 필드에 대해 에러 코드와 함께 에러를 등록하는 역할을 합니다. 메세지 템플릿에서는 arguments에 지정된 인자 값을 사용하여 에러 메세지를 동적으로 생성할 수 있습니다.

만약 arguments에 인자 값을 지정하지 않고, defaultMessage를 작성하지 않는다면, 컴파일 에러가 발생하는 이유는 defaultMessage에는 반드시 값을 지정해야 하기 때문입니다. arguments에 지정된 인자 값을 사용하지 않더라도, defaultMessage는 필수적으로 작성해야 합니다. 이를 통해 에러 메세지의 기본 값이 표시되도록 할 수 있습니다.

감사합니다.

ezzange님의 프로필 이미지
ezzange

작성한 질문수

질문하기