Jsf 2 JSF2中的验证程序问题

Jsf 2 JSF2中的验证程序问题,jsf-2,validation,jsf-1.2,Jsf 2,Validation,Jsf 1.2,我们正在从JSF1.2迁移到JSF2。 我们在验证中面临问题,我们使用的是ApacheMyFaces2和RichFaces4.3 下面是xhtml代码: <h:form id="form"> <ui:include src="panel1.xhtml"/> <h:commandButton id="btn1" value="Submit" action="#{bean.submit}"/>

我们正在从JSF1.2迁移到JSF2。 我们在验证中面临问题,我们使用的是ApacheMyFaces2和RichFaces4.3 下面是xhtml代码:

<h:form id="form">      
            <ui:include src="panel1.xhtml"/>

                <h:commandButton id="btn1" value="Submit" action="#{bean.submit}"/>

</h:form>

panel1.xhtml包含一个自定义组件,如下所示:

  <h:panelGrid columns="2">

               <h:outputText value="Enter Phone"/>                                 
               <h:inputText id="compId" value="#{map['Phone']}" size="12" maxlength="20"  required="true" 
               validator="#{validator.validatePhone}"/>

           <!-- other components omitted  -->
 </h:panelGrid>

 public void validatePhone(FacesContext arg0, UIComponent arg1, Object obj)
            throws ValidatorException {

        String phoneVal = (String) obj;

        if(phoneVal .length() <5){
            //rest of the code is omitted 
        }

公用void验证电话(FacesContext arg0、UIComponent arg1、Object obj)
抛出验证器异常{
字符串phoneVal=(字符串)obj;

如果(phoneVal.length()不一致的原因是在JSF2中,
null
值在默认情况下不会通过验证。来源:

为了使验证器完全符合规范的第2版和更高版本,它不得在空值或空值上失败验证,除非它专门用于处理空值或空值

要支持JSF1.2中的验证行为,请使用
javax.faces.VALIDATE\u EMPTY\u FIELDS
context参数:

<context-param>
    <param-name>javax.faces.VALIDATE_EMPTY_FIELDS</param-name>
    <param-value>false</param-value>
</context-param>

javax.faces.VALIDATE_空_字段
假的

感谢您的帮助。如上图所示添加上下文参数与JSF 1.2完全一样