0

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

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

或者 ?

谢谢

4

1 回答 1

1

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

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

于 2011-10-04T22:12:27.217 回答