Grails 3.3: встроенные ограничения применяются? доступны? - PullRequest
0 голосов
/ 29 августа 2018

Я работаю с новым "GrailsDomainClass API" в Grails 3.3.6. Доступ к ограничениям можно получить, вызвав constrainedProperties для класса домена. Острота.

Однако попытка сделать это со встроенным доменом приводит к groovy.lang.MissingPropertyException . У Grails нет проблем с обработкой встроенного источника домена, ограничений и всего, но у меня проблема с их программным поиском. Подсказки оценены.

Редактировать: Пример метода:

private Constrained resolveConstraints(DomainClassMeta currentBeanMeta,
                                       DomainPropertyMeta currentPropertyMeta)
{
  String propertyName = currentPropertyMeta.name
  def constrained = null
  try {
    constrained = currentBeanMeta.clazz.constrainedProperties[propertyName]
  } catch (groovy.lang.MissingPropertyException exc) {
    // Ignore
  }
  return constrained
}

В этом методе currentBeanMeta.clazz извлекает домен java.lang.Class. Мы вызываем constrainedProperties, чтобы получить карту, проиндексированную по именам свойств. (Это явно упоминается в руководстве пользователя Grails.) В настоящее время результатом является org.grails.validation.ConstrainedDelegate, который реализует Constrained. Однако, если домен внедрен, исключение выдается, потому что свойство constrainedProperties отсутствует. Для чего это стоит, встроенный домен был введен в контекст сопоставления через createEmbeddedEntity(clazz).

...