grails在表单提交之前删除id参数

标签 grails grails-orm grails-controller

我面临以下问题:我有要编辑的实体。所以我导航到显示页面,然后编辑页面。比方说编号 我的实体等于 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/

相关文章:

grails - 生成的 Controller 的更新方法中的version参数是什么

grails - 在tomcat 5.5下部署grails应用程序时出错

json - Grails REST API - 使用分页、元数据和来自参数的自定义包含字段渲染 JSON

grails - 为什么 Grails 命令对象默认提交对域对象的更改?

grails - 具有hasMany的Grails类

unit-testing - 在grails中执行 Controller 的单元测试时,不能使用grailsApplication.getMetadata.get (“”)

web - 启动grails应用程序时遇到获取依赖项错误

grails - Grails gorm:在其他表中查找丢失的条目

grails - 如何让 Grails 将我的 String 字段映射到 Clob?

grails - 域构造函数上缺少 transient 属性(带有映射参数)