2010-07-16 75 views
14

是否有人知道如何在下面的示例中打印出fieldError显示Grails现场错误

与错误的每个项目,我想打印我在messages.properties定义文件

在所有这样做的那一刻自定义错误消息是打印默认的错误代码

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

我已经看到了其他的例子,你可以查找一个字段的错误代码,例如

it.getFieldError('title').code 

但我想将默认消息转换为我的新错误消息并打印。

回答

20

您需要访问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

放高清为messageSource访问消息(在控制器或服务) 由于这个工作。 item.errors?.allErrors?.each {println messageSource.getMessage(it,null) }; 我还发现了一个很好的链接,说明此项更好 http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html – MTH 2010-07-16 22:59:32

+1

伯特,它似乎并不喜欢这个自2010年以来变得更简单。是否有一个原因,即单个错误对象没有返回特定消息的'message'字段,而不必导入一个bean并调用一个静态方法? – 2014-03-31 16:52:03