2

假设我有一个Person类。人有两个孩子BuilderDoctor。Person 类带有用户名属性(就像他们经常做的那样)。当然,通过继承 Builder 和 Doctor 类也有一个用户名。

现在我想美化 i18n 验证消息。我添加了以下想法,它将适用于我的所有 3 个课程

person.email.blank=Email is required

但在验证子类的对象时没有使用它。如果我添加以下内容

doctor.email.blank=Email is required
builder.email.blank=Builder is required

我得到了想要的结果,但它似乎并不像它可能的那样干燥。有没有人对此有任何想法。也许我只是做错了什么!

4

1 回答 1

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() 后的结果将是“需要电子邮件”和“需要其他属性”

您可以通过在域类之间共享自定义验证器方法来重用它。

于 2012-08-27T19:47:52.010 回答