vij*_*agi 2 grails shared global customvalidator
我正在尝试为属性编写一个通用的自定义验证器,使其通用我需要在闭包内对字段名称的引用,代码如下在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")
})
Run Code Online (Sandbox Code Playgroud)
在我的域类中
class Student{
String name
static constraints = {
name(shared:'nameShared')
}
}
class Teacher{
String firstName
String lastName
static constraints = {
firstName(shared:'nameShared')
}
}
Run Code Online (Sandbox Code Playgroud)
我想对name和firstName使用相同的验证器,但由于我在验证器中对fieldName进行硬编码,它将始终用于name而不是firstName,所以我想知道是否有任何方式我可以获得对fieldname并使验证器通用,请帮助
您可以使用该变量propertyName来获取已验证属性的名称.
从grails docs:
Closure还可以访问约束适用于使用的字段的名称 propertyName
myField validator: { val, obj -> return propertyName == "myField" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |