grails - Grails:在 Controller 中动态更改域的约束

标签 grails

我是Grails的初学者。我有一个在Grails(2.0.1版)中具有domainName字段的Domain类。在我的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')
}

这可能吗?

最佳答案

您可以执行以下操作:

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

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

  }
}

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

关于grails - Grails:在 Controller 中动态更改域的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542431/

相关文章:

grails - grails 中的数据绑定(bind)异常

chalice 2.0 : Use variable for image resource

grails - Grails 项目结构概述

javascript - Grails 模板内联 javascript 与外部文件 javascript

Grails - 从另一个租户检索对象

java - 如何使用映射器将自定义查询字符串附加到 grails 资源?

caching - 为什么打开 @Cacheable 会导致我的事务失败?

对空 hasOne 关联的 Grails GORM 查询失败

hibernate - Grails 中的 Gorm 与 Hibernate 映射?

javascript - 如何在 React 组件中嵌入和调用外部 JavaScript 函数?