我的 Controller 在另一个软件包中有一个命令对象。我将其导入 Controller 中。我从create Action 创建并返回此命令的实例:

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

但是save操作闭包不会从属性中实例化此命令的对象:
    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方法中实例化命令对象。我还需要做其他事情吗?

请您参考如下方法:

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!