Validation 字段为空时不调用自定义验证器

Validation 字段为空时不调用自定义验证器,validation,jsf,jsf-2.2,Validation,Jsf,Jsf 2.2,参考给出的示例,我已经为我的屏幕实现了一个自定义验证器 但在我的例子中,如果我没有在任何字段中输入任何值,则不会调用我的验证器方法。因此,对空字段的检查从未完成。每次都会显示所需的消息 如果我删除了必需的属性,即使在这种情况下,也只有当字段中有一些值时才会调用验证器。如何在validator类中完成所有验证 我的xhtml: <h:form> <p:messages id="message" closable="true"/>

参考给出的示例,我已经为我的屏幕实现了一个自定义验证器

但在我的例子中,如果我没有在任何字段中输入任何值,则不会调用我的验证器方法。因此,对空字段的检查从未完成。每次都会显示所需的消息

如果我删除了必需的属性,即使在这种情况下,也只有当字段中有一些值时才会调用验证器。如何在validator类中完成所有验证

我的xhtml:

 <h:form>
                <p:messages id="message" closable="true"/>  
                <h:panelGrid columns="3" id="changePassPanel"> 
                    <h:outputLabel for="pwd0" value="Current password :" />  
                    <p:password id="pwd0" value="#{homeBean.password1}">                            
                        <f:validator validatorId="PasswordValidator"></f:validator>
                        <f:attribute name="pwd1" value="#{pwd1}" />
                        <f:attribute name="pwd2" value="#{pwd2}" />
                    </p:password> 

                    <h:outputLabel for="pwd1" value="New password :" />  
                    <p:password id="pwd1" value="#{homeBean.password2}" binding="#{pwd1}"/> 

                    <h:outputLabel for="pwd2" value="Confirm new password :" />  
                    <p:password id="pwd2"  binding="#{pwd2}"/>
                </h:panelGrid>  
                <p:commandButton id="saveButton" value="Save"  validateClient="true"/>  
            </h:form>


您是否在
web.xml
中将
javax.faces.VALIDATE\u EMPTY\u字段设置为
false
左右?好的。你用的是Mojarra还是MyFaces?当JSR303 bean验证不可用时,MyFaces默认为
false
。无论如何,请尝试将其显式设置为
true
@BalusC No luck。如果我从所有字段中删除required=true,它将永远不会到达验证器。如果我对pwd0使用required=true,并且提交时没有输入任何值,那么我会在屏幕上看到验证错误(仍然不会调用validator方法)。只有当我在pwd0中输入一个值并提交它时,它才会调用validator方法。我希望它在所有情况下都首先调用验证器。