在我的xhtml页面中,我有inputText字段,附加了两个Validator。还有ajax事件"模糊"附加用于在从字段切换焦点时触发验证。这是代码:
<t:selectOneMenu id="locateRecordBy" value="#{personBean.locateRecordBy}">
<f:selectItems value="#{personBean.locateRecordByItems}"/>
</t:selectOneMenu>
<t:inputText id="personName"
value="#{personBean.name}"
required="true"
requiredMessage="Name is required.">
<p:ajax event="blur" partialSubmit="true" process="@this" update="nameerror" global="false" />
<f:validator disabled="#{param['PersonForm:locateRecordBy'] == 'FEMALE'}" validatorId="com.myapp.validators.MalePersonValidator"/>
<f:validator disabled="#{param['PersonForm:locateRecordBy'] == 'MALE'}" validatorId="com.myapp.validators.FemalePersonValidator"/>
</t:inputText>
所以我想在personName字段上不再关注焦点后根据选择项验证personName与相应的Validator。请提出任何建议,我应该更改或添加什么?
P.S。在表单提交验证工作上非常好。
答案 0 :(得分:0)
实际上我发现代码中缺少了什么。我添加了locateRecordBy
componnent以便用ajax处理,所以不要这样:
<p:ajax event="blur" partialSubmit="true" process="@this" update="nameerror" global="false" />
我有这个:
<p:ajax event="blur" partialSubmit="true" process="@this, locateRecordBy" update="nameerror" global="false" />
基本上我忘了指示JSF处理locateRecordBy
以及为什么locateRecordBy
参数从未出现在ajax请求中,这导致两个验证器都被禁用并验证{{1}要跳过的字段。