2012-09-27 50 views
2

我在我的控制方法進行驗證的命令對象,並在驗證失敗時我想打印出來呈現爲JSON的錯誤消息:Grails的驗證:從錯誤對象中獲取消息字符串

def doSomething(MyCommand cmd) { 
    if (cmd.hasErrors()) { 
     render ([success: false, error: cmd.errors.getFieldError("myfield")] as JSON) 
    } 
} 

這將輸出JSON表示字段錯誤,但我只是想打印已解決的錯誤消息。我怎樣才能做到這一點?

謝謝!

+0

雖然你解決你的問題,但這種聯繫是有益的:http://grails.org/doc/latest/guide/validation.html – Lrrr

回答

3

啊,我解決了這個問題:

render ([success: false, error: message(error: cmd.errors.getFieldError("myfield"))] as JSON) 

之前,我使用消息(得到一個錯誤),也許我犯了另一個錯誤,然後。

2

這對我的作品

def errMsgList = domainClassObj.errors.allErrors.collect{g.message([error : it])}

+1

我能問哪來的變量'g'上的代碼'g.message([error ...'來自?沒有定義。 – Gideon

+0

'g'是標籤庫。如果你調用控制器中的任何標籤都會工作,不要擔心如果日食不承認它 – IgniteCoders

1

的職位是舊的,但這裏是我的解決方案。

import org.codehaus.groovy.grails.commons.ApplicationHolder 

def myCommand = new MyCommand() 

myCommand.errors.reject('Foo error') 
myCommand.errors.reject('Bar message') 
myCommand.errors.reject('myCommand.myfield.nullable') 

def appHolder = ApplicationHolder.application.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib') 
def list = myCommand.errors.allErrors.collect{appHolder.g.message([error: it])} 
list 

結果:

["Foo error","Bar message","Property myfield cannot be null"]