我遇到以下问题:我有想要编辑的实体。所以我导航到显示页面然后编辑页面。假设我的实体的 id 等于 2 。然后我们有以下网址: app / entity / show / 2 - > 应用/实体/编辑/ 2 即可。然后,我在编辑页面上更新我的实体并提交表单,然后转到 app / entity / update 。 在我的控制器中,我有以下代码用于update()方法:
def update(Entity entity) {
//some code
}
我调试更新方法并看到该实体包含 id = 2 ,这意味着id包含在params中(可能是因为之前的url等于 app / entity / edit / 2 )。事实上,如果要通过调试检查它是在params。但是我想在提交表单之前从params中排除 id ,因为Grails会做一些不适合我的事情:如果 id 在params中,grails将获取实体及其关联来自DB。假设我们有一对多关联 1:entity-N:otherEntity ,在我的编辑页面上可以删除一些 otherEntities ,但由于实体的 id 在params内,Grails会提取 otherEntities ,即使它们已在编辑页面上删除。那么是否可以在表单提交之前从params中排除实体的 id ? 谢谢!
UPD
在我的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
}
给出一个空实体
答案 0 :(得分:0)
如果省略id,你将如何更新实例?您将拥有的只是其他属性 - 您计划在哪里存储这些属性?
Grails正在检索实例,因为您通过将Entity entity
作为参数添加到控制器操作来告诉它。执行此操作时,数据绑定代码将查找id
参数,如果找到,则使用请求类获取实例。如果您不希望它加载实例,请删除该参数并直接使用params
。