簡體   English   中英

控制器中的Grails默認方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM