我的 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()。默认情况下,命令对象将在创建对象时进行验证




