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

标签 ajax validation jsf-2 render

我想使用 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将导致所有字段都得到验证。

所以我的问题是: 如何使用 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>

您最终可以将它们分组到表单上方。

关于ajax - JSF 和 Ajax 验证 - 如何更新所有消息的消息面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5858941/

相关文章:

javascript - ReadyState不会变成4

javascript - REST API - Vanilla JavaScript/AJAX 中的 POST 方法 - 错误 400(错误请求)

c++ - C++ 中的输入验证

html - 去除 HTML5 验证中的 "please fill out this field"消息

java - 记录 jsf 页面请求的 IP 地址

debugging - 如何在 Tomcat 中通过 JNDI 配置 JSF 2.0 应用程序的项目阶段

php - 带有 ajax 更新的 Jqueryui 可排序列表

javascript - $.each 功能因对象类型而异

javascript - Angular js - 表单和输入 - ajax 与客户端验证

javascript - onbeforeunload javascript 调用 backing bean 方法