2017-03-05 74 views
0

我想定製(包括國際化)不工作JSR303,但我總是得到JSR303的i18n基於Primefaces頁

### Message 'msg.test.validation' not found ### 

我創建了一個ValidationMessages.properties與內容文件

msg.test.validation=This is a test 

的文件(包括ValidationMessages_de.properties,_de_DE.properties和_en.properties)被放置在src/main/resources中。在戰爭文件的文件位於WEB-INF/classes目錄(標準的Maven行爲)

在Managed Bean我

@NotNull  
@Pattern (regexp="^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$", message = "{msg.test.validation}") 
private String test; 

而且Primefaces 6.0基於頁面包含

<h:form> 
    <p:inputText id="test" value="#{validationView.test}" label="Test" /> 
    <p:commandButton id="testbutton" action="#{validationView.showTest}" value="Test" validateClient="true" /> 
    <p:message for="test" /> 
</h:form> 

我似乎沒有找到ValidationMessages,但爲什麼?如果我放置消息而不是佔位符'msg.test.validation',則會顯示此消息。

任何提示?

+0

找到原因,我已經啓用'primefaces.CLIENT_SIDE_VALIDATION'。禁用時,會找到消息。但是我仍然沒有找到保持該屬性可用的解決方案。 – Joern

回答

0

這應當黃金面孔組件內的工作爲:

<p:inputText validatorMessage="#{message['msg.test.validation']}" /> 
+0

工作,但消息不能引用ValidationMessage,而是引用包文件夾中的messages.properties。不是100%我想要做的。例如。我無法使用{0}包含字段名稱,我可以在ValidationMessages文件中執行此操作 – Joern

+0

我在這裏遇到了同樣的問題。解決方法是在primefaces客戶端驗證中不起作用。如果p:comandButton的clientValidation = true,那麼beanvalidation.js文件也不會包含您的自定義消息。我們禁用了此功能,現在請求已完成以驗證屬性。 File是資源文件夾根目錄中的ValidationMessages.properties。對我而言,這是最簡單的方法。 –

+0

是的,你不能像{0}那樣包含序號,但是你可以使用{max},{min}這些bean驗證參數。 –