2013-02-10 56 views
3

我簡直就是剛剛開始使用grails並剛剛生成一些腳手架。 似乎有一些非常通用的代碼在這裏將在每個控制器中重複。將樣板代碼從控制器中移出

  1. 測試的get()方法是否成功
  2. 樂觀鎖定檢查

你會如何建議從控制器刪除此? 理想我想只是做一個

def personInstance = Person.get(id) 

,然後對每個控制器什麼是在每一個控制器生成默認的一個異常處理程序做的。

def update(Long id, Long version) { 
    def personInstance = Person.get(id) 
    if (!personInstance) { 
     flash.message = message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), id]) 
     redirect(action: "list") 
     return 
    } 

    if (version != null) { 
     if (personInstance.version > version) { 
      personInstance.errors.rejectValue("version", "default.optimistic.locking.failure", 
         [message(code: 'person.label', default: 'Person')] as Object[], 
         "Another user has updated this Person while you were editing") 
      render(view: "edit", model: [personInstance: personInstance]) 
      return 
     } 
    } 

回答

2

如果要更改控制器的默認腳手架,只需發出「grails install-templates」命令即可。很多文件將在src/templates文件夾中創建。其中一個是「src/templates/scaffolding/Controller.groovy」

然後,只需將「update」函數修改爲您需要的格式,然後再爲您的域類生成控制器。

不過,你應該考慮你是否真的不想使用樂觀/悲觀鎖定,因爲這會讓你的應用程序變得不是事務性的。

+0

謝謝我不知道關於grails安裝模板。 我想使用樂觀鎖 - 我只是不想手動檢查每個控制器使用基本相同的代碼。 – SuprF1y 2013-02-10 23:25:49