[英]Grails default methods in controller
我在使用grails保存域實例時遇到問題; 傳遞給控制器中的默認更新方法的domainInstance為NULL。 我提交的GSP頁面不是默認的編輯頁面。 我有來自DB的某些值需要保存。 我在頁面上定義了包含我需要提交的值的表單標記,如下所示。 <g:form id="sampleForm" url="[resource:domainInstance, controller:'cntrlrName', action:'update']" method="PUT" >
我也有一個看起來像這樣的版本字段。 <g:hiddenField name="version" value="${domainInstance?.version}" />
我的g:提交如下<g:actionSubmit action="update" value="${message(code: 'default.button.update.label', default: 'Update')}" />
為什么我的域實例為空? 我錯過了什么?
這是人們可能犯的常見錯誤。 <g:form>
標記中的屬性id
不是HTML標記的id
屬性,但它是在Grails的默認映射的鏈接中使用的id,即
"/$controller/$action/$id" {}
因此,將您的代碼更改為:
<g:form name="sampleForm" id="${domainInstance.id}" controller="cntrlrName" action="update" method="PUT">
您可以傳遞domainInstance,但我覺得傳遞id而不是對象是更好的做法。 嘗試傳遞域實例的id,然后讀取控制器中的對象。
<g:form name="sampleForm" action="action" controller="controller" id="${domainInstance.id}" ></g:form>
//在控制器中
def resource = Domain.read(params.id)
另一種方法是將domainInstance作為hiddenField傳遞
<g:hiddenField name="resource" value="$domainInstance" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.