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

时间:2011-11-16 18:02:47

标签: grails gorm

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

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

class Currency {
  Integer quantity
  String currencyType
}

1 个答案:

答案 0 :(得分:1)

只需在嵌入对象中定义static constraints即可。

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即可显示相应的错误。