grails - 时髦的, chalice : high level questions on extraneous properties and command objects/data binding

标签 grails groovy command-objects

只是一些高层次的,希望非常快速的问题:

1)如果我有一个带有单个字段 x 的类 A,则正在构建它

def A = new A(x:someVal, y:someVal) 

完全没问题?

2)相关,以下是将命令对象的相关部分复制到域对象的好方法吗?
 def domainObject = new DomainObject(commandObject.properties).  

其中命令对象有额外的属性。或者应该改为:
def domainObject = new DomainObject()
domainObject.properties['prop1', 'prop2', ...] = commandObject.properties

或者 ?

谢谢

最佳答案

对于第一个问题,区分普通的 groovy 对象和 grails 域对象很重要。带有抛出 MissingPropertyException 的 Groovy 对象. Grails 域对象会默默地忽略额外的属性。

关于第二个问题,使用命令对象初始化 grails 域对象是一种常见的模式,通常可以。参数可能有点危险。恶意用户可以将任何内容放入参数中,因此最好明确说明您要分配的属性。否则,时间戳和用户之类的东西,甚至像注入(inject)的 spring bean 之类的非映射列都可能会受到影响。

关于grails - 时髦的, chalice : high level questions on extraneous properties and command objects/data binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7642992/

相关文章:

java - 如何在 Grails 中创建 Controller 的 "clone"?

grails - Grails 2.4.4使用已删除的i18n文件

string - 输入字段中的Grails格式日期

groovy - 相当于 Groovy 中的 eval()

grails - 如何将 id 列表绑定(bind)到 grails 中的命令对象?

Grails - ORM 加入以显示名称与 ID

groovy - 在 spock 中对列表进行断言

testing - GEB 找到第一个可见元素

grails - Grails 命令对象可以有可变数量的参数吗?