grails - 在 Grails 中,我如何判断一个对象是否是 transient 的?

标签 grails groovy

我在 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/

相关文章:

java - 在 ubuntu 中运行 grails 应用程序时无法找到 java 编译器 com.sun.to

grails - grails 4 sessionRegistry空

Grails 3 默认强制使用 https

java - Groovy/Spock 测试具有成员 @Inject 的 Java 类

grails - 没有在 Controller 中获取域类注释

grails - grails redirect(action :'index')重定向以显示操作

servlets - 注释掉grails 2.4项目的web.xml中异步支持的影响是什么?

http - 使用 groovy 和数据发送 POST 已经进行了 URL 编码

jenkins - 错误:Jenkins Groovy脚本中的 “Expected named arguments”并行

Grails计算字符串的长度