Grails 필드 오류 표시
-
16-09-2020 - |
문제
누구나 아래 예에서는 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.message
는 messages.properties
의 로컬 문자열입니다.이 특정 예에서는이 메시지가 같은 것을 읽습니다 ...
modified.invalid.validator.message=Property [{0}] of [{1}] does not pass validation
. 제휴하지 않습니다 StackOverflow