2014-01-30 45 views
1

我需要驗證表單中的兩個字段:電子郵件和名稱。該電子郵件應與模板[email protected]匹配,並且該名稱只能包含字母。jsf爲正則表達式的多個自定義驗證器消息

我有custom-faces-messages.properties與模式不匹配時需要顯示的消息。

javax.faces.validator.RegexValidator.NOT_MATCHED = {1}: Validation Error: Value not according to pattern ''{0}''

然而,代替的{0},其顯示該圖案在一個漂亮的醜陋的方式,我想顯示爲每個驗證自定義文本。例如,名稱應該是'名稱只能包含字母',對於電子郵件'電子郵件不符合模式。示例[email protected]'

有沒有辦法使用屬性文件來做到這一點?

預先感謝您。

+0

是否需要每個字段的特定新消息?儘管可以替換「{0}」和「{1}」,但似乎並不可行。 – Tiny

+0

是的,我想有具體的不同的消息..有什麼辦法將某些參數傳遞給屬性文件或什麼? – Steffi

回答

1

如果您的電子郵件和名稱字段實施爲h:inputText,那麼您可以使用validatorvalidatorMessage屬性。見JSF VDL document

第二(更復雜)的方式:創建你自己的驗證器。我有自己的電子郵件驗證,我把它在應用這樣的:

<h:inputText id="email" label="#{msg.email}" 
    value="#{registrationForm.email}" 
    size="40" maxlength="80" required="true"> 
    <f:converter converterId="lowerCase" /> 
    <f:validator validatorId="email-validator" /> 
</h:inputText> 

3路:檢查它在支持你想要豆和顯示信息。

0

是的,有一種方法可以從屬性文件中調用此方法。 我這樣做。在項目的屬性包下創建一個message.properties文件。 (我的路徑是:src/main/bla.bla.bla/bean/properties/message.properties)

now;

/src/main/webapp/WEB-INF/faces-config.xml編輯此文件。 添加下面

<application> 
    your.src.bla.properties.message (this is path to message.properties file) 
</application> 

(your.src.bla.properties.message)DONT變化properties.message部分反向的那些行。

並添加此行message.properties文件:

javax.faces.validator.RegexValidator.NOT_MATCHED="Your message comes here" 

立即停下來,開始你的項目,因爲它可能無法進行熱交換。 你會在對話框中看到你的消息,屏幕右上角的彈出窗口。