문제

누구나 아래 예에서는 fieldError를 인쇄 할 수있는 방법을 알고 있습니까?

오류가있는 각 항목에 대해 내가 messages.properties 파일에 정의한 사용자 정의 오류 메시지를 인쇄하고 싶습니다

이 모든 것이 기본 오류 코드가 인쇄됩니다

item.errors?.allErrors?.each{ 
  println it.toString() 
}
.

필드 E.g의 오류 코드를 조회 할 수있는 다른 예제를 보았습니다.

it.getFieldError('title').code
.

그러나 기본 메시지를 새 오류 메시지로 변환하고 그를 인쇄하고 싶습니다.

도움이 되었습니까?

해결책

Messagesource Bean에 액세스 할 필요가 있습니다.

와 함께
def messageSource
. 컨트롤러 또는 서비스의

.그런 다음

로 메시지에 액세스 할 수 있습니다.
def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
   for (error in fieldErrors.allErrors) {
      String message = messageSource.getMessage(error, locale)
   }
}
.

다른 팁

더 나은 성능을 가진 다소 단순한 솔루션이 될 것입니다.

MessageSource messageSource //Inject the messageSource class

e.errors.allErrors.each {
  String message = messageSource.getMessage(it, Locale.default)
}
.

또는

필드 오류 만 처리하려면 다음을 수행하십시오.

e.errors.fieldErrors.each {
   String message = messageSource.getMessage("modified.invalid.validator.message", [it.field, 'message'] as Object[], Locale.default))
}
.

여기서 modified.invalid.validator.messagemessages.properties의 로컬 문자열입니다.이 특정 예에서는이 메시지가 같은 것을 읽습니다 ...

modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top