2010-09-25 25 views
1

我在我的控制器的另一個包中有一個命令對象。我將它導入控制器。我創建和創建操作返回此命令的一個實例:我需要爲命令對象做一些特殊的事情才能在grails中實例化嗎?

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爲空在保存關閉。該命令類有兩個屬性name和jrxmlFile。從我所知道的,grails應該從params實例化save方法中的命令對象。我還需要做其他事嗎?

+0

你不應該創建命令對象http://jira.codehaus.org/browse/GRAILS-5568,我需要看到更多的代碼來理解你的保存操作失敗的原因;幷包含來自命令對象的代碼會有所幫助 – 2010-09-25 14:57:13

回答

2

我相信電話cmd.validate()是不必要的,你應該只需撥打cmd.hasErrors()。命令對象在創建對象時將默認生效

0

是的,對命令對象沒有validate()方法。就像艾倫所建議的那樣調用hasErrors

相關問題