簡體   English   中英

用於bean驗證的自定義驗證消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM