我試圖爲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註釋而引起的問題嗎?我可以通過它嗎? 我希望能夠看到我的自定義消息。 我嘗試了所有我能想到的,但沒有得到它的工作,請幫助!
感謝提前。
首先,您並未使用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
@Alf:爲什麼不使用bean驗證?我的jsf頁面中沒有驗證器標籤。據我所知'@ Size','@ NotNull','@ Max'等。是bean驗證,而不是jsf。我使用的唯一的jsf驗證器是required = true,並且在它沒有工作之後嘗試添加,所以我沒有真正使用它,只是對它進行了測試。是的,我確信這兩件事情,我可以看到路徑中的文件,我可以看到'javax.faces.converter.BigDecimalConverter.DECIMAL'錯誤消息,任何想法? – user590586 2012-07-23 12:36:41
您的設置與Bean驗證無關。正如你所看到的'javax.faces.converter.BigDecimalConverter.DECIMAL'是一個jsf錯誤。如果要覆蓋bean驗證消息,則必須在WEB-IF/classes文件夾中添加ValidationMessages_xx.properties。無論如何,我不明白爲什麼在某些情況下jsf本地化消息包,而不是其他的。 – Alf 2012-07-24 08:25:29