2011-03-29 143 views
3

這裏是我的FormBean: -JSR 303 Bean驗證春季

public class LoginFormBean { 

    @NotEmpty 
    private String userId; 

    @NotEmpty 
    private String password;  

    public String getUserId() { 
     return userId; 
    } 

    public void setUserId(String userId) { 
     this.userId = userId; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String pass) { 
     this.password = pass; 
    } 
} 

,並在我的message.properties文件我寫: -

NotEmpty={0} must not empty. 

它顯示了我的錯誤消息:userId must not empty.password must not empty.

但我想要顯示錯誤消息爲User Id must not empty.'Password must not empty.'

我知道我可以在我的formBean中使用@NotEmpty(message="User Id must not empty"),但我想同步消息,就好像我們需要更改消息一樣,它的開銷會小一些。
我搜索了JSR文檔,但沒有找到任何東西來替換我的屬性名稱userIdUser Id在飛行中。請大家幫助我,從兩天內就陷入困境。
如果這是不可能的,那麼告訴我,如果沒有,然後幫助我的東西替代。

感謝
沙姆斯

回答

0

在同一message.properties文件,你可以添加以下內容:

userId=User Id 
password=Password 

,或者您可以使用字段名稱驗證消息代碼的單獨的文件和單獨的文件。這將會更具可讀性。

好運:)

4

你現在可能已經解決了這個問題,但設立的錯誤消息對JSR您需要將條目添加到您的屬性文件的格式如下303個formbean都要:

<Constraint-Name>.<formbean-name>.<attribute-name>=My Message Text 

在你的情況,這將是:

NotEmpty.loginFormBean.userId=User Id must not empty 

NotEmpty.loginFormBean.password=Password must not empty 

其中loginFormBean是您的窗體的名稱,而不是類名。

+0

感謝您的回覆,是的,我知道我可以像這樣使用,但它仍然不是「可重複使用」。在這種情況下,我必須爲屬性文件中的每個屬性創建一個新條目,即使我在多個bean中使用'userId'屬性。 – Shams 2011-06-28 13:29:35

0

僅供參考,請記錄BeanPropertyBindingResult實例並檢查日誌。您會爲違反驗證的每個屬性找到四種不同類型的屬性代碼。

下面是一個簡單的日誌以供參考

Field error in object 'member' on field 'name': rejected value []; codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [member.name,name]; arguments []; default message [name]]; default message [may not be empty] 

在上面的日誌,你可以找到 codes [NotEmpty.member.name,NotEmpty.name,NotEmpty.java.lang.String,NotEmpty]

如果不配置任何錯誤代碼或彈簧沒有找到匹配的代碼,那麼春天都會有用於解決錯誤消息的DefaultMessageCodesResolver。檢查java doc以查看其他錯誤代碼的格式。