我在对话框中验证了三个组件,组件的onblur如下:
<p:message for="idEstNumOfUser" display="icon" id="msgEstNumOfUser" />
<p:inputText id="idEstNumOfUser"
placeholder="Estimated Number of Users"
value="#{mybean.estimatedUserCount}" required="true" requiredMessage="Estimated Number of Users Is Required"
maxlength="8" title="Estimated Number of Users"
validatorMessage="Please enter digits only for 'Estimated Number of Users'"
converterMessage="Please enter digits only for 'Estimated Number of Users'">
<f:convertNumber />
<p:ajax event="blur" update=":betasignup:msgEstNumOfUser" />
</p:inputText>
<p:message for="idTxtFirstName" display="icon" id="msgFirstName" />
<p:inputText id="idTxtFirstName" placeholder="First Name"
value="#{mybean.firstName}" required="true"
requiredMessage="First Name Is Required" maxlength="100"
title="First Name">
<p:ajax event="blur" update=":betasignup:msgFirstName" />
</p:inputText>
<p:message for="idTxtLastName" display="icon" id="msgLastName" />
<p:inputText id="idTxtLastName" placeholder="Last Name"
value="#{mybean.lastName}" required="true"
requiredMessage="Last Name Is Required" maxlength="100"
title="Last Name">
<p:ajax event="blur" update=":betasignup:msgLastName" />
</p:inputText>
<p:messages id="messages" autoUpdate="true"/>
我的bean有视图范围。
CASE:将第一个字段留空并导航到第二个字段时p:消息显示第一个字段的消息,当第二个字段为空并导航到第三个字段时,p:消息首先清除消息字段并仅显示第二个字段的消息,我希望它保留旧消息(并在仅修复错误的情况下删除错误消息)并显示两个验证消息,因为第一个字段和第二个字段当前有验证错误。
编辑:对话框代码
<h:form id="betasignup" title="#{msg['betasignup.text']}">
<p:dialog id="dlgSignUp" widgetVar="signUpDialog" resizable="false"
modal="true" header="#{msg['betasignup.header']}" styleClass="sign-up-dialog">
我如何显示对话框:
<p:commandLink id="iam_interested2" styleClass="iam_interested"
oncomplete="signUpDialog.show()"
actionListener="#{myBean.init()}"
update=":betasignup">
请告知,谢谢。
答案 0 :(得分:0)
使用process="@form"
设置每个ajax更新标记。我怀疑为什么一次只为一个组件显示验证消息的原因是每个ajax请求只处理一个组件。因此,一次只有一个组件验证失败,并且只有一个验证消息将排队。通过设置每个组件,您将确保表单中的每个组件在处理期间通过验证,并且它们各自的验证器将启动。