[英]Custom validation message for bean validation
我正在創建一個JSF 2應用程序,我正在嘗試在bean中使用表單驗證而不是faces-page。 我還想使用.properties文件來存儲消息。
我看了這個問題,但我認為我沒有正確設置屬性文件。
假設我在名為'dev'的包中有一個名為User的bean:
@ManagedBean
@SessionScoped
public class User implements Serializable {
@Pattern(pattern=".+@.+\\.[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的博客中所解釋的那樣?
提前致謝!
/丹尼斯
我還在WEB-INF / classes中創建了一個文件'ValidationMessages.properties'(我正在使用Netbeans 7.0.1)
我知道你自己直接把它放在項目的/WEB-INF/classes
文件夾中了嗎? 如果讓IDE構建/部署WAR,這可能會被忽略/覆蓋(至少對Eclipse來說是這樣)。 您應該將該文件直接放在項目的Java源文件夾的根目錄中。 在將項目導出到WAR文件然后使用某些ZIP工具提取之后,您可以驗證自己是否真的在/WEB-INF/classes
中結束。
我將.properties文件放在resources文件夾中並且它工作正常,無需在任何地方注冊該文件。 記錄:我正在使用Netbeans 7.0.1和Maven。
感謝您的幫助,BalusC!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.