微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSF和Ajax验证 – 如何更新所有消息的消息面板?

我想用 AJAX验证所有输入字段.

例如,有3个输入字段.其中两个最小长度为3个字符,另一个由简单的正则表达式验证.对于< f:ajax>我设置了keyup事件以快速查看ajax验证.完整示例可能如下所示:

<h:form>
       <h:messages id="messages" />
       <h:inputText id="text1" value="#{bean.text1}">
           <f:validateLength minimum="3" />
           <f:ajax execute="@this" event="keyup" render="messages" />
       </h:inputText>

       <h:inputText id="text2" value="#{bean.text2}">
           <f:validateLength minimum="3" />
           <f:ajax execute="@this" event="keyup" render="messages" />
       </h:inputText>

        <h:inputText id="text3" value="#{bean.text3}">
            <f:validateRegex pattern="[A-Z][a-zA-Z]*" />
            <f:ajax execute="@this" event="keyup" render="messages" />
        </h:inputText>
    </h:form>

一旦我将输入的第一个输入字段留下错误跳转到第二个字段并在那里键入无效的东西,第一个无效字段的消息就会消失,因为消息被重新呈现!一旦我开始在第一个输入字段中输入,将执行设置为@form将导致所有字段都被验证.

所以我的问题是:@H_502_16@如何使用AJAX显示所有验证错误,而不仅仅是最后一个无效字段的最后一条消息?

P.S.:我在Websphere上使用Mojarra 2.0.3(Richfaces Primefaces)

解决方法

不可能.最好的办法就是给每个输入提供自己的信息.

<h:form>
    <h:panelGrid columns="2">
        <h:inputText id="text1" value="#{bean.text1}">
            <f:validateLength minimum="3" />
            <f:ajax event="keyup" render="text1message" />
        </h:inputText>
        <h:message id="text1message" for="text1" />

        <h:inputText id="text2" value="#{bean.text2}">
            <f:validateLength minimum="3" />
            <f:ajax event="keyup" render="text2message" />
        </h:inputText>
        <h:message id="text2message" for="text2" />

        <h:inputText id="text3" value="#{bean.text3}">
            <f:validateRegex pattern="[A-Z][a-zA-Z]*" />
            <f:ajax event="keyup" render="text3message" />
        </h:inputText>
        <h:message id="text3message" for="text3" />
    </h:panelGrid>
</h:form>

您最终可以将它们组合在表单上方.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐