JSF自定义校验器

       在JSF中的校验器可以采用JSF自身的校验器,如果自身的校验器不能满足需要可以自定义校验器,其中系统自带的校验器如下:

import javax.faces.validator.LengthValidator;
import javax.faces.validator.DoubleRangeValidator;
import javax.faces.validator.LongRangeValidator;

 

  无论是JSF类库自带的校验器还是自定义的校验器的必须实现相关的校验接口:

import javax.faces.validator.Validator;

 

下面讲解在JSF中可以自定义自己的校验器使用:

首先必须创建自定义的校验器类的如下:

package com.easyway.jsf.commons;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;

import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

/***
 * JSF自定义验证器的实现
 * 必须实现Validator的接口
 * public void validate(FacesContext fc, UIComponent uicom, Object obj)
 *			throws ValidatorException;
 *
 * @author longgangbai
 *  
 */
public class EmailValidator implements Validator{

	private String pattern;
	
	public String getPattern() {
		return pattern;
	}

	public void setPattern(String pattern) {
		this.pattern = pattern;
	}
	/**
	 * 添加一个校验器的方法
	 */
	public void validate(FacesContext fc, UIComponent uicom, Object obj)
			throws ValidatorException {
		String email=(String)obj;
		//验证电子邮件的长度是否符合条件
		String mymsg=(String)uicom.getAttributes().get("mymsg");
		//获取当前页面中属性的信息
		String emailpattern=(String)uicom.getAttributes().get("emailpattern");
		
		if(emailpattern!=null){
			pattern=emailpattern;
		}
		//添加一个FacesMessage 消息
		if(email.length()<5){
			FacesMessage message=new FacesMessage(FacesMessage.SEVERITY_ERROR,"电子邮件长度不足",mymsg);
            throw new ValidatorException(message);		
		}
		if(pattern!=null&&!email.matches(pattern)){
			FacesMessage message=new FacesMessage(FacesMessage.SEVERITY_ERROR,"电子邮件的格式不匹配","电子邮件的格式不匹配,请仔细检查");
            throw new ValidatorException(message);		
		}
	}

}

 

 

 

在JSF的配置文件faces-config.xml中添加相关的JSF校验器配置信息:

    <!-- JSF 校验器的配置 -->
    <validator>
		<validator-id>com.easyway.jsf.email</validator-id>
		<validator-class>com.easyway.jsf.commons.EmailValidator</validator-class>
	</validator>

 JSF自定义校验器使用如下:

	<!-- 校验器的使用 -->
	<h:outputLabel value="电子邮件:"></h:outputLabel>
	  <h:inputSecret id="email" value="#{mathService.email}" required="true">
		   <f:validator validatorId="com.easyway.jsf.email" />
		   <f:attribute name="mymsg" value="电子邮件长度必须大于5个字符"/>
		   <f:attribute name="emailpattern" value="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />
	  </h:inputSecret>
	  <h:message for="email" ></h:message>

 

在Validator中获取标签的属性:f:attribute中的绑定的信息如下:

	//验证电子邮件的长度是否符合条件
		String mymsg=(String)uicom.getAttributes().get("mymsg");
		//获取当前页面中属性的信息
		String emailpattern=(String)uicom.getAttributes().get("emailpattern");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值