在Grails中,可以在Config.groovy文件中定义全局约束,该文件可用于使用
验证来自每个域类的所有已定义约束。Config.groovy:
grails.gorm.default.constraints = {
'*'(nullable: true)
...
}
问题: 是否也可以定义仅用于一个域类的字段的约束?我正在考虑这样的事情(实际上并不奏效)
class myDomainClass{
fields
...
static constraints = {
'*'(MyCustomCOnstraint:true)
}
}
答案 0 :(得分:3)
我不知道是否有标准解决方案。
如果没有,您可以在约束闭包内构建一个循环:
static constraints = {
// use MyCustomCOnstraint:true for fields firstname, lastname and address
['firstname', 'lastname', 'address'].each { property ->
"$property"(MyCustomCOnstraint:true)
}
}
答案 1 :(得分:0)
你可以看一些事情:
// Null object error fix for backward compatibility grails.databinding.convertEmptyStringsToNull = false
这会停止将空白转换为空值 - 并且可以解决您的问题,为此您添加此功能的原因 - 为您自己的应用安全性...所以明智地选择。
import com.myapp.MyUserValidator beans = { 'com.myapp.UserValidator'(MyUserValidator)}
但说实话,我真的不认为除了讨论设置过滤器以将所有输入空白转换为空值之外,还有什么能够帮助的段:
convertBlanksToNullsAndTrim
您可以反转该代码,以便如果它为null,则使其为'''。再次使用上述点,如果默认情况下它可以设置为null,除非在config.groovy中设置了第1点
如果是我,我会尝试第一个选项,看看它是否能治愈现状