복붙노트

[SPRING] 봄 MVC - 잘못된 날짜에 대한 Joda datetime 오류 메시지

SPRING

봄 MVC - 잘못된 날짜에 대한 Joda datetime 오류 메시지

요청 개체에 joda datetime 특성이 있고 날짜 형식으로 @DateTimeFormat을 사용했습니다. 하지만 잘못된 날짜 (일일 55 자)를 입력하면 전체 메시지가 표시됩니다.

java.lang.String 유형의 등록 정보 값을 등록 정보 request.myDate의 필수 유형 org.joda.time.DateTime으로 변환하는 데 실패했습니다. 중첩 예외는 org.springframework.core.convert.ConvertFailedException : 값 "55/12/2014"를 java.lang.String 유형에서 org.joda.time.DateTime 유형으로 변환 할 수 없습니다. 중첩 예외는 org.joda.time.IllegalFieldValueException : "55/12/2014"을 구문 분석 할 수 없습니다 : dayOfMonth 값 55는 [1,31] 범위 내에 있어야합니다.

현재 메시지가 Spring에 의해 생성되므로 어떻게 커스텀 메시지로 변경할 수 있습니까?

다른 질문에서 날짜가 잘못된 경우 Spring mvc Joda Datetime 변환기가 실패합니다. message.properties에 항목을 입력하라는 메시지가 표시됩니다. 그러나 나는 어떤 오류도 내지 않을 것이므로 속성 파일에서 메시지를 선택하는 방법을 이해할 수 없습니다 .rejectValue 유형의 것입니다. 그러면 메시지가 어떻게 식별 될 것입니까?

해결법

  1. ==============================

    1.귀하의 질문에 링크 된 접근 방식이 효과가 있습니다. 그러나 사용해야하는 메시지 키는 예를 들어 typeMismatch.org.joda.time.DateTime입니다.

    귀하의 질문에 링크 된 접근 방식이 효과가 있습니다. 그러나 사용해야하는 메시지 키는 예를 들어 typeMismatch.org.joda.time.DateTime입니다.

    Spring이 수동으로 값을 거부하지는 않지만 Spring은 DefaultMessageCodesResolver의 JavaDoc에 설명 된 규칙을 기반으로 메시지를 찾을 위치를 자동으로 알 수 있습니다.

    Spring이 다음과 같은 코드를 구체적으로 찾을 것이라고 설명하는 상황에서 :

    따라서 잘못된 형식과 같은 일반적인 typeMismatch 메시지를 정의한 다음 필요에 따라 더 구체적인 메시지를 정의 할 수 있습니다. 보다 구체적인 오류 코드는 아래의 오류 코드보다 우선 순위가 높습니다. 따라서 typeMismatch와 typeMismatch.org.joda.time.DateTime 메시지를 모두 정의한 경우에는 후자가 사용됩니다.

  2. from https://stackoverflow.com/questions/27706068/spring-mvc-joda-datetime-error-message-for-invalid-date by cc-by-sa and MIT license