2017-04-19 78 views
3

我有一个输入字段,它必须满足以下限制:输入数据应该只有2个字符,它只能接受字母和数字,并且它必须是大写。到目前为止,我做了以下内容:每个jsf验证器标记的单个错误消息

<h:inputText id="code" > 
     <f:validateLength minimum="2" maximum="2" /> 
     <f:validateRegex pattern="^[a-zA-Z0-9]*$"/> 
     <f:validateRegex pattern="^[A-Z0-9]*$"/> 
</h:inputText> 

然而,我需要单独的错误信息时,这些验证的失败。我做了一些搜索,我发现以下解决方案不合适:

1)How to customize JSF validation error message:提供文本标签内的validatorMessage属性不会做的工作,因为这样一来,我可以提供每个输入文本标签只有一个消息。

2)http://incepttechnologies.blogspot.ro/p/validation-in-jsf.html:支持bean中的验证方法,或使用@FacesValidator注释进行的命令验证都不好,因为这正是我试图避免的;我想将验证从后端移动到前端

3)https://www.mkyong.com/jsf2/customize-validation-error-message-in-jsf-2-0/:覆盖messages.properties中的错误消息不好,原因有两个:1.我只想在本地使用自定义错误消息(页面范围),不适用于整个应用程序。 2.我具有相同的验证标签存在的两倍 - 但具有不同的图案,并且我想为每一种情况

的文档的验证标记(http://docs.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/http://docs.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/f/validateLength.html)一个不同的错误消息指定没有属性如“信息”,或'errorMessage',正如我所希望的。

回答

0

临时解决方案是将所有错误消息连接成一个大消息。在任何验证失败的情况下,相应的消息总是包含在大消息中。

所以我使用inputText标记中的validatorMessage属性。 此外,为了不要让大的消息多次(当验证的多个失败)我更换了3个验证具有同等之一:

<f:validateRegex pattern="^[A-Z0-9]{2}$"/> 
1

我没有tFied千吨,但我认为一个woraround将自定义重写的验证消息放置在特定语言环境(可用于此案例)属性文件中,并使用f:view标记的locale属性在页面级别设置语言环境,以便消息从特定于语言环境的消息包。

+0

不错的主意,但不幸的是我不能让它工作;在jsf中我放了'',然后我创建了文件messages_ko.properties,并且将它放置在不同的位置,比如jsf文件夹,后台bean的文件夹,但是当验证错误触发器,我得到了默认的错误信息,而不是覆盖的那一个 –

+0

好吧,是否尝试将它放在资源文件夹? – OTM