2011-11-24 188 views
0

我正在查看使用grails generate-all生成的控制器。有沒有一個原因,爲什麼有兩個createsave行動?作爲一項服務,只有create作爲服務,save作爲服務纔會更有意義。事情是這樣的:腳手架控制器操作

def create = { 
    if (params.create) { //this is the save button 
     if (!domainService.save(params)) { 
      render(view: "create", model: [domain: new Domain(params)]) //show validation errors 
     } 
     else { 
      render(view: "show", id: params.id) 
     } 
    } 
    else { 
     render(view: "create") //show blank form 
    } 
} 

是否有我爲什麼要保持雙方createsave行爲,而不能走這條路的任何原因?腳手架的控制器太重了,我正在尋找方法讓它稍微貴一點(我使用腳手架代碼來學習Grails)。

回答

1

創建操作是創建新的Domain實例的第一次入口,而保存是試圖保存的簡單操作。這些操作在控制器中有明確的名稱和簡單的代碼。

雖然你的方法有一些問題。你有兩個級別的if-else - 它可能有問題,並且閱讀和維護並不容易。實際上,您需要創建和維護執行控制器作業的domainService。沒有必要將簡單的save()分解爲服務。

至於我默認生成的grails控制器比你更簡單。