我是Grails的初学者。我有一个Domain类,它在Grails(版本2.0.1)中有domainName字段。在我的DomainConstraints.groovy中,我有:
constraints = {
domainName blank: false, matches: "^([^.]{0,63}\\.)*([^.]{1,63})\$"
}
但是根据某些情况,我想将此domainName字段设置为“blank:true”或“blank:false”。我没有根据实际数据库验证我的域类,因此与域类和实际表同步不是问题。
所以,我想做这样的事情(下面的代码来自我的想象):
if(something){
Domain.constraints.removeAttr('blank')
} else {
Domain.constraints.addAttr('blank', 'true')
}
这可能吗?
答案 0 :(得分:2)
你可以这样做:
class DomainConstraints {
Boolean validateBlankFlag
String domainName
static transients = [validateBlankFlag]
static constraints = {
domainName validator : { val,obj -> !val?.equals("") || !obj.validateBlankFlag}
}
}
然后根据您是否要允许空值来设置域对象上的validateBlankFlag
。如果您可以根据DomainConstraints对象中的其他属性值做出决定,则可能甚至不需要validateBlankFlag
属性。