2013-04-16 268 views
1

我使用的是GlassFish 3.1.2.2,我想定義一個通用驗證消息模板爲不包括字段標識符/標籤。JSF自定義消息驗證錯誤

我發現夫婦這些解決方案的StackOverflow上相關話題,但沒有(所有涉及javax.faces.validator.BeanValidator.MESSAGE)工作。

1)放置在ValidationMessages.properties類路徑的根(在我的情況下,它被放置在WEB-INF /類我WAR文件) - 定義ValidationMessages.properties文件沒有影響

2)在<消息-bundle> faces-config.xml中 - faces-config.xml中沒有影響

3)限定<資源包的ValidationMessages.properties文件> - 不影響

我測試了資源包是正確地因爲我可以在EL中使用它,例如:#{text ['javax.faces.validator.BeanVal idator.MESSAGE']}其中文本是我的來自資源束定義的var。

注:我不想在我的應用程序中的每個輸入字段上都提供validatorMessage屬性。我只想爲整個應用程序設置我的自定義消息。

重要提示:此處顯示的解決方案Mkyong.com不適用。

注意:我聲明使用JSF 2.0和Glassfish 3.1.2.2肯定支持。 注意:我不想在託管bean中實現驗證,而不是使用JSF驗證/ Bean驗證。

+0

您正在使用jsf 1.X,不是嗎? – jmrodrigg

+0

Mkyong解決方案對我開箱即用(使用zip提供)對glassfish 3.1.2.2 – gpilotino

+0

@gpilotino我只是再次下載了Mkyong示例。如果不輸入任何數據,然後點擊「提交」,則出現以下錯誤消息: 1)_username:驗證錯誤:值是required._ 2)出生_DATE:驗證錯誤:值是required._ 我希望這些消息是自定義的,例如「xyz」。 **我添加了_javax.faces.validator.BeanValidator.MESSAGE = xyz_行到MyMessages.properties並且沒有任何更改** –

回答

0

在你的JSP/XHTML 添加<h:messages>並從託管Bean取決於條件 顯示錯誤信息使用

FacesContext ctx = FacesContext.getCurrentInstance(); 
FacesMessage msg =new FacesMessage(FacesMessage.SEVERITY_INFO, errorMessage,detailMessage); 
ctx.addMessage(null, msg); 
+0

這不是我問的。當然,我使用h:message標籤,並且看到驗證消息時我沒有任何問題。 –

+0

此外,我不想自己實現驗證,並在我的託管bean中創建FacesMessage對象。 –

2

我回答自己:設置自定義消息所需的字段驗證你需要設置以下在消息包文件屬性(消息束faces-config.xml中通過<消息束>標記中定義):

1)javax.faces.component.UIInput.REQUIRED_detail - 消息第at默認顯示在h:message或h:messages標記中 - 或showDetail = true時(默認情況下)。一般就夠了。

2)javax.faces.component.UIInput.REQUIRED - 在h:message和h:messages標記中showSummary = true時顯示的消息。如果在h:message/h:消息中顯示摘要,請另外設置此項。

注:這是不正確的,javax.faces.validator.BeanValidator.MESSAGE負責所需字段錯誤消息。