我面临以下问题:我有要编辑的实体。所以我导航到显示页面,然后编辑页面。比方说编号 我的实体等于 2 .然后我们有以下网址:
应用程序/实体/显示/2 -> 应用程序/实体/编辑/2 .然后我在编辑页面上更新我的实体并提交表单并转到 应用程序/实体/更新 .
在我的 Controller 中,我有以下 update() 方法的代码:
def update(Entity entity) {
//some code
}
我调试更新方法并看到该实体包含 id = 2 这意味着 id 包含在参数中(可能是因为以前的 url 等于 app/entity/edit/2 )。事实上,如果要检查调试,它在参数中。但我想排除编号 在提交表单之前从 params 获取,因为 Grails 做了一些不适合我的事情:如果 编号 在 params grails 中,grails 从 DB 中获取实体及其关联。假设我们有 一对多 协会 1:实体-N:其他实体 ,在我的编辑页面上可以删除一些 其他实体 , 但自从 编号 的实体 在 params 中,grails 获取那些 其他实体 即使它们在编辑页面上被删除。那么是否可以排除编号 表单提交之前来自 params 的实体?
谢谢!
更新
在我的 edit.gsp 中有以下代码:
<g:form url="[resource: empInstance, action: 'update']" method="PUT">
我把它改成
<g:form controller="emp" action="update" method="PUT">
现在 id 不包含在 params 但此代码中:
def update(Entity entity) {
//some code
}
给出一个空实体
最佳答案
如果省略 id,你将如何更新实例?您将拥有的只是其他属性-您打算将它们存储在哪里?
Grails 正在检索实例,因为您通过添加 Entity entity
告诉它作为 Controller 操作的参数。当您这样做时,数据绑定(bind)代码会查找 id
参数,如果找到一个,将使用请求类来获取实例。如果您不希望它加载实例,请删除该参数并直接使用 params
.
关于grails在表单提交之前删除id参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27564114/