每个jsf验证器标记的单独错误消息

时间:2017-04-19 09:12:23

标签: validation jsf

我有一个必须满足以下限制的输入字段:输入数据应该只有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;正如我所希望的那样。

2 个答案:

答案 0 :(得分:1)

我还没有尝试过Kt,但我认为将把自定义覆盖的验证消息放在特定于区域设置(只能用于本例)的属性文件中,并使用f:view标签的locale属性来设置页面级别的语言环境,以便从特定于语言环境的消息包中显示消息。

答案 1 :(得分:0)

临时解决方案是将所有错误消息连接成一条大消息。如果任何验证失败,则相应的消息无论如何都包含在大消息中。

所以我使用了validatorMessage标记中的inputText属性。 此外,为了不多次获取大型消息(当多个验证失败时),我将3个验证替换为等效的验证:

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