プロパティの汎用カスタムバリデーターを作成しようとしています。汎用にするために、クロージャー内のフィールド名への参照が必要です。コードは次のとおりです。
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')
}
}
name と firstName の両方に同じバリデーターを使用したいのですが、バリデーターで fieldName をハードコーディングしているため、firstName ではなく name に対して常に機能するため、とにかく参照を取得できるかどうかを知りたいですfieldname を作成し、バリデータをジェネリックにします。助けてください