我正在創建一個JSF 2應用程序,我試圖在bean中使用表單驗證,而不是使用faces-page。我還想使用.properties文件來存儲消息。用於bean驗證的自定義驗證消息
我看着this question但我不認爲我有屬性文件設置正確。
比方說,我有一個名爲用戶在包豆稱爲「開發」:
@ManagedBean
@SessionScoped
public class User implements Serializable {
@Pattern(pattern="[email protected]+\\.[a-z]+", message="{dev.User.emailAddress}")
private String emailAddress;
// getter/setter
}
我還創建了在WEB-INF/classes目錄文件「ValidationMessages.properties」(我使用Netbeans的7.0.1)
在ValidationMessages.properties文件我已經有了這個鍵/值線:
dev.User.emailAddress=Custom invalid email message
而且我認爲(user.xhtml)看起來是這樣的:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>User registration</title>
</h:head>
<h:body>
<h:form>
<h:inputText id="emailAddress" value="#{user.emailAddress}" required="true" />
<h:message for="emailAddress" />
<h:commandButton value="Ok" action="null" />
</h:form>
</h:body>
當我輸入了無效的電子郵件,然後按下按鈕,網頁中的驗證消息上寫着:
{dev.User.emailAddress}
,而不是
Custom invalid email message
可能的問題是我沒有在web.xml中註冊我的屬性文件?
我應該在bean中將required =「true」切換到@NotNull。有什麼更多的,我需要做的比插入此:
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
在BalusC's blog的解釋呢?
在此先感謝!
/丹尼斯
這很奇怪。你使用了什麼bean驗證實現和/或什麼servletcontainer? – BalusC
我使用的是Glassfish 3.1(與Netbeans捆綁)。不確定你的意思是通過bean驗證實現嗎? –