我正在研究基於註釋的方法來驗證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