2010-09-17 48 views
0

我正在學習bean驗證。我創建了帶有用戶名和密碼輸入字段的簡單表單,這些輸入字段通過支持bean綁定到模型(用戶)屬性用戶名和密碼。我與註釋標記他們:h:消息沒有輸出

@Id 
@NotNull(message="Username cannot be empty") 
private String username; 
@NotNull(message="Password cannot be empty") 
private String password; 

現在有了這種形式,我已經把<h:messages/><h:form>...</h:form>在頁面上。我提交空表單,我被重定向到同一頁面(我在支持bean的action方法中返回null),但沒有消息正在顯示。我究竟做錯了什麼?

回答

1

解決方法是使用@NotNull而不是使用@Size,因爲空輸入字段實際上是空字符串,而不是null

1

如果您想讓@NotNull正常工作,您確實需要讓JSF將空字符串設置爲null。在JSF 2.0,你可以做到這一點通過添加以下上下文參數去的web.xml

<context-param> 
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name> 
    <param-value>true</param-value> 
</context-param> 

我不能從經驗告訴我們,如果將觸發@NotNull,但在理論上它應該。試一試。