我正在尝试为属性编写一个通用的自定义验证器,为了使其通用,我需要在闭包中引用字段名称,代码如下在 config.groovy
grails.gorm.default.constraints = {
nameShared(validator: {val, obj, errors->
Pattern p = Pattern.compile("[a-zA-Z0-9-]{1,15}")
Matcher m = p.matcher(val)
boolean b = m.matches()
if(!b)
errors.rejectValue('name', "${obj.class}.name.invalid", "Name is invalid")
})
在我的域类中
class Student{
String name
static constraints = {
name(shared:'nameShared')
}
}
class Teacher{
String firstName
String lastName
static constraints = {
firstName(shared:'nameShared')
}
}
我想对姓名和名字使用相同的验证器,但是由于我在验证器中对字段名进行硬编码,所以它始终适用于姓名而不是名字,所以我想知道是否有任何方法可以参考字段名并使验证器通用,请帮助