我正在使用Grails 3.3.6中新的“ GrailsDomainClass API”。可以通过在域类上调用 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
的{{1}}。但是,如果嵌入了域,则会因为缺少Constrained
属性而引发异常。值得一提的是,嵌入式域通过constrainedProperties
引入了映射上下文。