我擺脫了最初的更新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
商品是Density的財產,我應該添加Rcommodity以及? – randomizertech 2010-10-15 14:10:15
對此延遲感到抱歉 - 請查看「數據綁定」文檔(http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.1.6數據綁定)。您的參數(從gsp表單輸入名稱中設置)需要與densityInstances屬性相匹配 - 我無法分辨您稱爲它們的內容,而是從上面粘貼的其中一行中猜出。 – 2010-10-18 21:23:08
好吧,假設我在第一行有一個字段,我在其中創建了所有這些字段,名稱爲「commodity」,因此在域中聲明。那麼創建的是'Rcommodity'我應該將它添加到域以及更新它?這就是你想說的嗎? – randomizertech 2010-10-20 16:13:19