假设我有一个人类。人有两个孩子建设者和医生。 Person类带有username属性(正如他们经常做的那样)。通过继承当然,Builder和Doctor类也有一个用户名。
现在我想美化i18n验证消息。我添加以下认为它将适用于我的所有3个类
person.email.blank=Email is required
但在验证子类的对象时未使用它。如果我添加以下
doctor.email.blank=Email is required
builder.email.blank=Builder is required
我得到了理想的结果,但它似乎并不像它那样干燥。 有没有人对此有任何想法。也许我只是做错了什么!
答案 0 :(得分:0)
我能够通过使用自定义验证器和所有必需消息的单个消息来实现此目的。
在属性文件中:
default.isRequired= {3} is required
email=Email
otherProperty=Other property
域类中的:
email validator: {val, obj -> obj.isRequiredValidator(val, "email") }
email validator: {val, obj -> obj.isRequiredValidator(val, "otherProperty") }
private isRequiredValidator(val, key) {
if (!val)
return [default.isRequired, messageSource.getKey(key)]
}
调用validate()后的结果将是“需要电子邮件”和“其他属性是必需的”
您可以通过在域类之间共享来重用自定义验证器方法。