控制器中的Grails默认方法
在grails中保存域实例时遇到问题;传递给控制器中默认更新方法的domainInstance为NULL。我提交的GSP页面不是默认的编辑页面。我需要保存DB中的某些值。我在页面上定义了表单标签,其中包含我需要提交的值,如下所示。控制器中的Grails默认方法,grails,Grails,在grails中保存域实例时遇到问题;传递给控制器中默认更新方法的domainInstance为NULL。我提交的GSP页面不是默认的编辑页面。我需要保存DB中的某些值。我在页面上定义了表单标签,其中包含我需要提交的值,如下所示。 我还有一个版本字段,看起来像这样。 我的g:提交如下 为什么我的域实例为空?我遗漏了什么?您可以传递domainInstance,但我觉得传递id而不是对象是更好的做法。尝试传递域实例的id,然后读取控制器中的对象 <g:form name="sample
我还有一个版本字段,看起来像这样。
我的g:提交如下
为什么我的域实例为空?我遗漏了什么?您可以传递domainInstance,但我觉得传递id而不是对象是更好的做法。尝试传递域实例的id,然后读取控制器中的对象
<g:form name="sampleForm" action="action" controller="controller" id="${domainInstance.id}" ></g:form>
另一种方法是将domainInstance作为hiddenField传递
<g:hiddenField name="resource" value="$domainInstance" />
这是一个人可能犯的常见错误。
标记中的属性id
不是HTML标记的id
属性,而是Grails默认映射链接中使用的id,即
"/$controller/$action/$id" {}
因此,将您的标签更改为:
<g:form name="sampleForm" id="${domainInstance.id}" controller="cntrlrName" action="update" method="PUT">
请向社区展示一些代码,以帮助您解决问题,并发布控制器代码。对不起。我注意到代码没有出现在我的问题描述中。我现在已经更新了。非常感谢你
<g:form name="sampleForm" id="${domainInstance.id}" controller="cntrlrName" action="update" method="PUT">