2010-10-13 77 views
0

我擺脫了最初的更新gsp Grails提供。Grails:UPDATE函數是如何工作的?

我把它放在我的list.gsp表的第一行,並更改表克所有的值:文本字段,以便他們可以不用去的save.gsp

但現在我可以編輯試圖使它工作,而我不能。

我在每一行的最後一列添加了一個更新按鈕。

當我改變了G的值:文本框,然後點擊更新按鈕它告訴我

Density #ID updated

但值不會更改。

我想我在控制器中的def update中做了一些錯誤。

下面是代碼:

def update = { 
     log.info "Entering Action ${actionUri}" 

     def densityInstance = Density.get(params.id) 
     if (densityInstance) { 

       if(params?.Rcommodity) { 
        println "${params.Rcommodity}" 

       } 
      if (params.version) { 
       def version = params.version.toLong() 
       if (densityInstance.version > version) { 

        densityInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'density.label', default: 'Density')] as Object[], "Another user has updated this Density while you were editing") 
        render(view: "list", model: [densityInstance: densityInstance]) 
        return 
       } 
      } 
      densityInstance.properties = params 
      if (!densityInstance.hasErrors() && densityInstance.save(flush: true)) { 
       flash.message = "${message(code: 'default.updated.message', args: [message(code: 'density.label', default: 'Density'), densityInstance.id])}" 
       redirect(action: "list", id: densityInstance.id) 
      } 
      else { 
       redirect(action: "list", id: densityInstance.id) 
      } 
     } 
     else { 
      flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'density.label', default: 'Density'), params.id])}" 
      redirect(action: "list") 
     } 
    } 

的Rcommodity創建文本框的名字,我把一個println來看看它的值是正確的,現在我不知道該怎麼做的價值文本字段是輸入的文本字段,它給了我與之前相同的值,但是它給了我一條消息說它已被更新。 該控制器是密度控制器和域密度

任何幫助將不勝感激。感謝:D

回答

1

從正在打印的Flash消息看起來好像實例正在更新(儘管「#ID」位看起來很奇怪 - 是否替換了實際的ID?)。

這可能是

densityInstance.properties = params 

實際上沒有被匹配任何實例屬性,所以沒有之前保存實際上是被改變。你確定你已經命名你的gsp輸入字段來匹配你的Density類字段的名字嗎?例如,Rcommodity是Density的一個屬性?

可能有助於添加gsp頁面的表單以及密度域類。

+0

商品是Density的財產,我應該添加Rcommodity以及? – randomizertech 2010-10-15 14:10:15

+0

對此延遲感到抱歉 - 請查看「數據綁定」文檔(http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.6數據綁定)。您的參數(從gsp表單輸入名稱中設置)需要與densityInstances屬性相匹配 - 我無法分辨您稱爲它們的內容,而是從上面粘貼的其中一行中猜出。 – 2010-10-18 21:23:08

+0

好吧,假設我在第一行有一個字段,我在其中創建了所有這些字段,名稱爲「commodity」,因此在域中聲明。那麼創建的是'Rcommodity'我應該將它添加到域以及更新它?這就是你想說的嗎? – randomizertech 2010-10-20 16:13:19