在Grails中,如何判断对象是否是瞬态的?

时间:2012-05-17 17:33:20

标签: grails groovy

我在Grails中有一段代码:

def product = Product.get(5) ?: new Product()
product.isDiscounted = product.isDiscounted ?: true

问题是,如果已经为现有产品设置了isDiscounted属性并且它是假的,我最终会将其更改为true。是否可以检查物体是否是瞬态的?

1 个答案:

答案 0 :(得分:5)

在这种情况下,请设置属性Boolean而不是boolean,然后初始值为null,而不是默认为false。这也有助于验证,因为您可以验证false的选择是故意的,而不仅仅是允许默认值。

一般情况下,您可以使用isAttached()方法(或属性样式变体attached),例如

def product = Product.get(5) ?: new Product()
product.isDiscounted = product.attached ? product.isDiscounted ? true

使用构造函数中的默认值实际上可以更紧凑地完成这种情况:

def product = Product.get(5) ?: new Product(discounted: true)