我正在研究基于注释的方法来验证Spring beans,使用spring modules。在this tutorial,以下豆(省略getter和setter)被用作例如:基于注释的Spring bean验证
public final class User {
@NotBlank
@Length(max = 80)
private String name;
@NotBlank
@Email
@Length(max = 80)
private String email;
@NotBlank
@Length(max = 4000)
private String text;
}
如果特定的有效性规则违背所使用应遵循此格式的错误消息:
bean-class.bean-propery[validation-rule]=Validation Error message
上面显示的类别的示例包括:
User.email[not.blank]=Please enter your e-mail address.
User.email[email]=Please enter a valid e-mail address.
User.email[length]=Please enter no more than {2} characters.
消息键包含类名的事实存在几个问题:
- 如果该类被重命名,消息键也需要改变
如果我有另一个类(例如Person)与一个与User.email验证完全相同的电子邮件属性,我需要复制邮件,例如
Person.email [not.blank] =请输入您的电子邮件地址。
Person.email [email] =请输入一个有效的电子邮件地址。
Person.email [length] =请输入不超过{2}个字符。
事实上,该文档的权利要求是能够构成为特定的规则(例如@Email)这样的默认消息:
email=email address is invalid
此默认消息应如果bean-使用无法找到该规则的特定消息。但是,我的经验是,这根本行不通。
避免重复消息的替代机制是将错误消息的密钥传递给规则注释。例如,假设我已经定义了以下默认错误信息为@Email规则
badEmail=Email address is invalid
如果我标注的相关属性像这样应该使用此消息:
@Email(errorCode="badEmail")
private String email;
不过,我想这一点,一次又一次,它似乎并没有工作。有没有人找到一种方法来避免使用此验证框架时重复错误消息?
在上面显示的Spring配置中,什么是configurationLoader bean? – 2008-10-07 15:33:08