Grails - 使域类中的嵌入字段可为空

发布于 2024-12-16 00:32:18 字数 315 浏览 1 评论 0原文

如何将嵌入字段指定为可为空?在下面的简单示例中,如果没有与该商品关联的价格,我希望字段价格可为空。但是,如果有价格,则货币中的两个字段都是必需的。下面的代码不起作用。当我尝试保存项目时,它抱怨货币字段为空值。

 class Item {
  static constraints = {
    price(nullable:true)
  }
  static embedded = ['price']
  Currency price
}

class Currency {
  Integer quantity
  String currencyType
}

How can you specify an embedded field as nullable? In the simple example below I want the field price to be nullable, if there is no price associated with the item. However, if there is a price, both fields in the Currency are required. The following code doesn't work. When I try to save the Item, it complains about null values for the currency fields.

 class Item {
  static constraints = {
    price(nullable:true)
  }
  static embedded = ['price']
  Currency price
}

class Currency {
  Integer quantity
  String currencyType
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屌丝范 2024-12-23 00:32:18

只需在嵌入对象中定义一个静态约束即可。

class Currency {
...
    static constraints = {
        quantity(nullable:true)
        currencyType(nullable:true,validator:{ String val, Currency obj -> 
            if ((val && !obj.quantity) || (!val && obj.quantity)) {
                return 'Currency.both.fields.required';
            }
        })
    }
}

然后,只需将 'Currency.both.fields.required' 添加到 messages.properties 即可显示相应的错误。

Just define a static constraints in your embedded object.

class Currency {
...
    static constraints = {
        quantity(nullable:true)
        currencyType(nullable:true,validator:{ String val, Currency obj -> 
            if ((val && !obj.quantity) || (!val && obj.quantity)) {
                return 'Currency.both.fields.required';
            }
        })
    }
}

Then, just add 'Currency.both.fields.required' to your messages.properties to display the appropriate error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文