[英]Grails: how to set a meta-constraint on domain class property?
我有一个属于Subscription的Contact类,我想在订阅属性上设置一个hypothetic readonly约束,在scaffold模板中使用。
这堂课看起来像
class Contact {
static belongsTo = [subscription: Subscription]
static constraints = {
subscription(nullable: false, readonly: true) // hypothetic *readonly* constraint
name(blank: false)
email(blank: false, email: true)
}
Integer id
String name
String email
String description
}
我发现ConstrainedProperty.addMetaConstraint方法“添加了一个元限制,这是一种非验证信息约束”。
如何在Domain类中调用它?
我如何获得元约束?
在脚手架模板中,存在类型为org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass的属性domainClass。 这些对象具有属性constrainedProperties。 要超出'readonly',你必须这样做:
您的域类:
class Contact {
static belongsTo = [subscription: Subscription]
static constraints = {
subscription(nullable: false, attributes: [readonly: true])
}
String description
}
在脚手架模板中:
def ro = domainClass.constrainedProperties.subscription.attributes.readonly
DefaultGrailsDomainClass有一个带有类型Class属性的构造函数,也许你可以这样做:
def domainClass = new DefaultGrailsDomainClass(Contact.class)
def ro = domainClass.constrainedProperties.subscription.attributes.readonly
也许有一个工厂,但我不知道。
如果您特别需要影响scaffolded表单字段的readonly
约束,则可以使用:
static constraints = {
subscription(editable: false)
}
这是renderEditor.template
使用的约束列表(无论如何我可以通过快速搜索找到):
false
,导致呈现的字段为readonly - 适用于String和Date字段)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.