0

在 Grails 中,如果我有一个 Command 对象,例如

class MyCommand {
   MyObject object;
}

如果传入的请求数据有一个 ID 值,object那么当 Grails 数据绑定发生时,我的命令对象实际上是用数据库中的对象实例填充的。

我不想要这个。MyObject我只想要一个填充了传入请求数据的新实例。我不在乎数据库中是否已经存在具有相同 ID 的实例,我将自己处理。

如何在全局级别或最好在属性级别以某种方式(注释?)禁用此 DB 类型数据绑定。

我能想到的唯一另一种选择是,当我发送请求数据时,我会将 ID 值和对象属性分开,然后再将它们连接起来。如果可以避免,我不想这样做。

4

1 回答 1

0

您可以使用 ROLES 以不同方式调用端点。例如:

定义显示(){

    Person user = new Person()
    if(isSuperuser() && params?.id){
        user = Person.get(params.id.toLong())
    }else{
        user = Person.get(springSecurityService.principal.id)
    }
    ...

}

这将其设置为只有管理员可以提供 ID,否则它使用主体来获取登录用户。

于 2021-01-27T15:25:05.483 回答