2015-09-17 2 views
0

Я использовал для доступа Grails 2 ограничений в моем GSP так:Grails 3 Доступ к Grails ограничения домена во время выполнения

${MyDomainClass.constraints.myProperty.inList.collect{it.name()}} 

Это не работает в Grails 3 больше

+1

ОК, что будет grailsApplication.getArtefact ('Домен', 'MyDomainClass'). GetConstrainedProperties(). MyProperty.inList.collect {it.name()} – Exdevfr

+0

Вы должны поместить свой комментарий в ответ с ссылку на документацию Grails, подтверждающую разницу. Таким образом, будущие читатели могут легко найти этот ответ. – Nathan

ответ

1

в Grails 3.0 домен и командные объекты используют признак grails.validation.Validateable(Источник не найден here). Эта черта дает вам доступ к ограничениям, предоставляя следующий метод.

static Map<String, ConstrainedProperty> getConstraintsMap(); 

Чтобы получить доступ к ограничениям, вызываемым этим методом в вашем домене или объекте команды. В следующем примере обращается ограничение nullable на свойство объектов домена, которое называется day.

domainObject.getConstraintsMap()['day']['nullable'] 
+1

Итак, из того, что я понимаю, для класса домена это будет 'static Map getConstrainedProperties();' в соответствии с признаком DomainClass: [(source)] (https://github.com/) grails-core/blob/v3.0.8/grails-plugin-domain-class/src/main/groovy/grails/artefact/DomainClass.groovy) 'domainObject.getConstrainedProperties() ['day'] ['nullable «] '. Знак 'Validateable' предназначен для объектов команд. – Exdevfr

0

Таким образом, который был действителен в Grails 2, до сих пор работает ...

grailsApplication.getArtefact('Domain', 
    'MyDomainClass').getConstrainedProperties().myProperty.inList.collect{it.name()} 

see GrailsDomainClass API

+0

На самом деле доступ был изменен в Grails 3, введя черты. – saw303