我在 Grails 中有一段代码:
def product = Product.get(5) ?: new Product()
product.isDiscounted = product.isDiscounted ?: true
问题是,如果已经为现有产品设置了 isDiscounted
属性并且它是 false,我最终会将其更改为 true。是否可以检查一个对象是否是 transient 的?
最佳答案
在这种情况下,将属性设为 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)
关于grails - 在 Grails 中,我如何判断一个对象是否是 transient 的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640597/