2010-07-16 67 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