Jsf 2 JSF2中的验证程序问题
我们正在从JSF1.2迁移到JSF2。 我们在验证中面临问题,我们使用的是ApacheMyFaces2和RichFaces4.3 下面是xhtml代码: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}"/>
<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完全一样