【问题标题】:Grails: Dynamically change domain's constraints in controllerGrails:在控制器中动态更改域的约束
【发布时间】:2012-03-04 03:47:46
【问题描述】:

我是 Grails 初学者。我有一个 Domain 类,它在 Grails(版本 2.0.1)中有 domainName 字段。在我的 DomainConstraints.groovy 中,我有:

constraints = {
    domainName blank: false, matches: "^([^.]{0,63}\\.)*([^.]{1,63})\$"
}

但根据某些情况,我想将此域名字段设为“空白:真”或“空白:假”。我没有根据实际数据库验证我的域类,因此与域类和实际表同步不是问题。

所以,我想做这样的事情(下面的代码来自我的想象):

if(something){
   Domain.constraints.removeAttr('blank')
} else {
   Domain.constraints.addAttr('blank', 'true')
}

这可能吗?

【问题讨论】:

标签: grails


【解决方案1】:

你可以这样做:

class DomainConstraints {
  Boolean validateBlankFlag
  String domainName
  static transients = [validateBlankFlag]

  static constraints = {
    domainName validator :  { val,obj -> !val?.equals("") || !obj.validateBlankFlag}

  }
}

然后只需根据您是否要允许空白值在域对象上设置validateBlankFlag。如果您可以根据 DomainConstraints 对象中的其他属性值做出决定,您甚至可能不需要 validateBlankFlag 属性。

【讨论】:

  • @cweston 上面的代码在瞬态数组中显示validateBlankFlag
最近更新 更多