显示 Grails 字段错误
Posted
技术标签:
【中文标题】显示 Grails 字段错误【英文标题】:Displaying Grails Field Errors 【发布时间】:2011-03-16 21:35:08 【问题描述】:有人知道我如何在下面的示例中打印出fieldError
。
对于每个有错误的项目,我想打印我在 messages.properties 文件中定义的自定义错误消息
目前所做的只是打印默认错误代码
item.errors?.allErrors?.each
println it.toString()
我看过其他示例,您可以在其中查找字段的错误代码,例如
it.getFieldError('title').code
但我想将默认消息转换为我的新错误消息并打印出来。
【问题讨论】:
【参考方案1】:您需要访问 messageSource bean,例如与
def messageSource
在您的控制器或服务中。然后您可以使用
访问消息def locale = Locale.getDefault()
for (fieldErrors in bean.errors)
for (error in fieldErrors.allErrors)
String message = messageSource.getMessage(error, locale)
【讨论】:
把 def messageSource(在控制器或服务中)谢谢这个工作。 item.errors?.allErrors?.each println messageSource.getMessage(it, null) ;我还找到了一个很好的链接,可以更好地解释这一点johnrellis.blogspot.com/2010/02/… Burt,自 2010 年以来,这似乎并没有变得更简单。是否有原因是各个错误对象没有返回特定消息的message
字段而不是导入一个bean并调用一个静态方法?【参考方案2】:
具有更好性能的更简单的解决方案是;
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
【讨论】:
以上是关于显示 Grails 字段错误的主要内容,如果未能解决你的问题,请参考以下文章
使 IntelliJ 突出显示 Groovy/Grails 语法错误