Grails - сделать встроенное поле в доменном классе обнуляемым - PullRequest
3 голосов
/ 16 ноября 2011

Как вы можете указать встроенное поле как обнуляемое?В приведенном ниже простом примере я хочу, чтобы цена поля обнулялась, если с элементом не связана цена.Однако при наличии цены оба поля в Валюте являются обязательными.Следующий код не работает.Когда я пытаюсь сохранить элемент, он жалуется на нулевые значения для полей валюты.

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

class Currency {
  Integer quantity
  String currencyType
}

1 Ответ

1 голос
/ 16 ноября 2011

Просто определите 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, чтобы отобразить соответствующую ошибку.

...