Grails:对Domain类的所有字段应用自定义约束



在Grails中,可以在Config中定义全局约束。Groovy文件,该文件可用于使用

验证来自每个域类的所有定义约束。
Config.groovy:
    grails.gorm.default.constraints = {
        '*'(nullable: true)
        ...
    }

问题:是否也可以定义仅用于一个域类的字段的约束?我在想这样的事情(这在现实中是行不通的)

class myDomainClass{
fields
...
static constraints = {
'*'(MyCustomCOnstraint:true)
}
}

我不知道是否有一个标准的解决方案。

如果没有,您可以在约束闭包内构建一个循环:

static constraints = {
  // use MyCustomCOnstraint:true for fields firstname, lastname and address
  ['firstname', 'lastname', 'address'].each { property ->
    "$property"(MyCustomCOnstraint:true)
  }
}

您可以查看以下内容:

  1. 是一个向后兼容的hack -从grails 2.3.4开始,我认为:在你的config.groovy
// Null object error fix for backward compatibility 
grails.databinding.convertEmptyStringsToNull = false

这将停止将空白转换为null -并且可能解决您的问题,这是添加此功能的原因-为了您自己的应用程序安全…所以要明智地选择。

  1. 你可以看一下Burt beck的Grails编程,第3章涵盖了自定义验证,从安装模板到制作极端的自定义验证:

import com.myapp.MyUserValidator beans = {"com.myapp.UserValidator"(MyUserValidator)}

但老实说,我真的不认为有任何东西是可以帮助除了讨论设置一个过滤器将所有的输入空白转换为空:

convertBlanksToNullsAndTrim

您可以反转代码,以便如果它为空,则使其= "。同样,上面的点就位后,默认情况下,它可以被设置为空,除非在config.groovy

中设置了点1。

如果是我,我会尝试第一个选项,看看它是否能解决当前的问题

相关内容

  • 没有找到相关文章

最新更新