Я ищу способ изменить/изменить существующее закрытие. Однако я не хочу его перезаписывать; вместо этого я хотел бы улучшить его.Groovy/Grails: улучшите статическое закрытие
Вот краткий пример. Предположим, у нас есть адресный объект:
class Address {
String street
String city
String state
String zipCode
static constraints = {
street(nullable:true)
city(blank:false)
state(size:2..2)
}
}
Это был бы хороший пример, поскольку он также является действительным объектом домена Grails. То, что я ищу, чтобы сделать, это добавить еще одно ограничение, во время выполнения/динамически класса Адрес:
class Address {
String street
String city
String state
String zipCode
static constraints = {
street(nullable: true)
city(blank: false)
state(size: 2..2)
zipCode(size: 5..6)
}
}
Обратите внимание, что новый zipCode
ограничение? Я понимаю, что я могу скрыть все ограничения, переставив его через metaClass
; однако цель здесь не в том, чтобы повредить никому в процессе, поэтому я просто хочу, чтобы добавить к существующему закрытию.
Разве вы не говорите: «Моя, какая красивая структура!» дополнять структуру? Или вам нужно использовать более сложные описания? –
Да, просто попробовал это. И хотя закрытие было очень довольным, у него все еще отсутствовал 'zipCode' ... – tolitius