2012-07-22 70 views
0

我試圖爲bean驗證消息創建一個自定義messages.properties文件。 我在資源包中添加了一個Messages.properties文件,並將<application><message-bundle>resources.Messages</message-bundle></application>添加到我的faces-config.xml文件中。JSR 303驗證消息覆蓋@Id - 無法找到捆綁例外

我正在驗證具有主鍵字段並具有@Id註釋(javax.persistence.Id)的實體。

當我重寫像javax.faces.converter.BigDecimalConverter.DECIMAL這樣的消息時,它的工作格蘭特,但我的問題,當這個輸入爲空我得到的異常消息:Can't find bundle for base name resources.Messages, locale en_US

我也有這種驗證的消息 - 這是屬性文件javax.faces.component.UIInput.REQUIRED(所以這不是我錯過了正確的消息文本)。

所以我嘗試添加到faces-config.xml文件的語言環境配置:<locale-config> <default-locale>en_US</default-locale></locale-config>,並且還添加了另一個名爲屬性文件:Messages_en_US.properties到resorce包, 但我仍然得到例外。

可能是什麼問題?我錯過了什麼?這怎麼解決? 是由於@Id註釋而引起的問題嗎?我可以通過它嗎? 我希望能夠看到我的自定義消息。 我嘗試了所有我能想到的,但沒有得到它的工作,請幫助!

感謝提前。

+0

首先,您並未使用Bean驗證(JSR 303)。您正在使用驗證中構建的JSF。其次@Id與驗證無關。我不使用JSF驗證,但是我認爲'javax.faces.component.UIInput.REQUIRED'消息僅在facelet中的required =「true」的情況下顯示。你確定你的包在/ WEB-INF/classes/resources /文件夾中嗎?您確定可以正確覆蓋'javax.faces.converter.BigDecimalConverter.DECIMAL'嗎? – Alf 2012-07-22 14:09:53

+0

@Alf:爲什麼不使用bean驗證?我的jsf頁面中沒有驗證器標籤。據我所知'@ Size','@ NotNull','@ Max'等。是bean驗證,而不是jsf。我使用的唯一的jsf驗證器是required = true,並且在它沒有工作之後嘗試添加,所以我沒有真正使用它,只是對它進行了測試。是的,我確信這兩件事情,我可以看到路徑中的文件,我可以看到'javax.faces.converter.BigDecimalConverter.DECIMAL'錯誤消息,任何想法? – user590586 2012-07-23 12:36:41

+0

您的設置與Bean驗證無關。正如你所看到的'javax.faces.converter.BigDecimalConverter.DECIMAL'是一個jsf錯誤。如果要覆蓋bean驗證消息,則必須在WEB-IF/classes文件夾中添加ValidationMessages_xx.properties。無論如何,我不明白爲什麼在某些情況下jsf本地化消息包,而不是其他的。 – Alf 2012-07-24 08:25:29

回答

-1

只需將這些屬性文件放置在源文件夾中與WEB-INF資源文件夾中的結構相同,java類將從java資源文件夾中獲取引用。

試試這個,我也面臨同樣的問題,它適用於我。

+0

放置src文件夾內的一切都很簡單,但不建議。每個應用程序都有一個結構和它的組織。而不是複製src上的所有內容,嘗試獲取claspath上需要的內容。 – 2012-10-06 19:07:21