有谁知道我如何fieldError在下面的示例中打印出来。
对于每个有错误的项目,我想打印我在 messages.properties 文件中定义的自定义错误消息
目前所做的只是打印默认错误代码
item.errors?.allErrors?.each{
println it.toString()
}
我看过其他示例,您可以在其中查找字段的错误代码,例如
it.getFieldError('title').code
但我想将默认消息转换为我的新错误消息并打印出来。
有谁知道我如何fieldError在下面的示例中打印出来。
对于每个有错误的项目,我想打印我在 messages.properties 文件中定义的自定义错误消息
目前所做的只是打印默认错误代码
item.errors?.allErrors?.each{
println it.toString()
}
我看过其他示例,您可以在其中查找字段的错误代码,例如
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