2012-09-27 26 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"]