我是否必须为命令对象执行一些特殊操作才能在grails中实例化?

时间:2010-09-25 14:09:37

标签: grails groovy

我的控制器在另一个包中有一个命令对象。我在控制器中导入它。我从create action创建并返回此命令的实例:

def create = {
    def reportCreateCommand = new ReportCreateCommand()
    reportCreateCommand.name = params.name
    reportCreateCommand.jrxmlFile = params.jrxmlFile
    return [cmd: reportCreateCommand]
}

但是保存操作闭包不会从属性中实例化此命令的对象:

    def save = { ReportCreateCommand cmd ->
    if (cmd.validate()){
        def reportInstance = cmd.createReport()
        reportInstance.save()
        redirect(action:"show", id:reportInstance.id)
    } 
    else {
        render(view:"create", model:[cmd:cmd])
    }

}

显然,在保存闭包中cmd为null。命令类有两个属性名称和jrxmlFile。据我所知,grails应该从params实例化save方法中的命令对象。我还需要做其他事吗?

2 个答案:

答案 0 :(得分:2)

我认为不需要致电cmd.validate(),您应该致电cmd.hasErrors()。默认情况下,命令对象将在创建对象时进行验证

答案 1 :(得分:0)

是的,命令对象上没有validate()方法。只需按照Aaron的建议调用hasErrors