2017-03-05 32 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验证参数。 –