显示Grails字段错误

时间:2010-07-16 10:57:03

标签: grails error-handling grails-validation

是否有人知道如何在下面的示例中打印fieldError

对于每个有错误的项目,我想打印我在messages.properties文件中定义的自定义错误消息

目前所做的一切都是打印默认错误代码

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

我见过其他例子,您可以在其中查找字段的错误代码,例如

it.getFieldError('title').code

但我想将默认邮件转换为我的新错误邮件并打印出来。

2 个答案:

答案 0 :(得分:21)

您需要访问messageSource bean,例如与

def messageSource

在您的控制器或服务中。然后,您可以使用

访问消息
def locale = Locale.getDefault()
for (fieldErrors in bean.errors) {
   for (error in fieldErrors.allErrors) {
      String message = messageSource.getMessage(error, locale)
   }
}

答案 1 :(得分:0)

一个性能更好的简单解决方案将是;

MessageSource messageSource //Inject the messageSource class

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

OR

如果您只想处理字段错误:

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