我有一个必须满足以下限制的输入字段:输入数据应该只有2个字符,它应该只接受字母和数字,并且它必须是大写的。到目前为止,我做了以下事情:
<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)未指定任何属性,例如&#39; message&#39;或错误消息&#39;正如我所希望的那样。
答案 0 :(得分:1)
我还没有尝试过Kt,但我认为将把自定义覆盖的验证消息放在特定于区域设置(只能用于本例)的属性文件中,并使用f:view标签的locale属性来设置页面级别的语言环境,以便从特定于语言环境的消息包中显示消息。
答案 1 :(得分:0)
临时解决方案是将所有错误消息连接成一条大消息。如果任何验证失败,则相应的消息无论如何都包含在大消息中。
所以我使用了validatorMessage
标记中的inputText
属性。
此外,为了不多次获取大型消息(当多个验证失败时),我将3个验证替换为等效的验证:
<f:validateRegex pattern="^[A-Z0-9]{2}$"/>