本文参考
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
您可以自定义自己的验证器,所需要的是实现javax.faces.validator.Validator
接口,例如我们实现一个简单的密码验证器,检查字符长度,以及密码中是否包括字符与数字:
package bruce.zhao;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
public class PasswordValidator implements Validator {
public void validate(FacesContext context, UIComponent component, Object obj)
throws ValidatorException {
String password = (String) obj;
if (password.length() < 6) {
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "字符长度小于6", "字符长度不得小于6");
throw new ValidatorException(message);
}
if (!password.matches(".+[0-9]+")) {
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "密码必须包括字符与数字", "密码必须是字符加数字所组成");
throw new ValidatorException(message);
}
}
}
您要实现javax.faces.validator.Validator
接口中的validate()方法,如果验证错误,则丢出一个ValidatorException,它接受一个FacesMessage
对象,这个对象接受三个参数,分别表示信息的严重程度(INFO、 WARN、ERROR、FATAL)、信息概述与详细信息内容,这些信息将可以使用<h:messages>或<h: message>标签显示在页面上。
接下来要在faces-config.xml中注册验证器的标识(Validater ID),要加入以下的内容:
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
....
<validator>
<validator-id>
bruce.zhao.Password
</validator-id>
<validator-class>
bruce.zhao.PasswordValidator
</validator-class>
</validator>
....
</faces-config>
要使用自定义的验证器,我们可以使用<f:validator>
标签并设定validatorId属性,例如:
<h:inputSecret value="#{user.password}" required="true">
<f:validator validatorId="bruce.zhao.Password"/>
</h:inputSecret><p>
....
以上几步就完成了自定义验证器的操作,您也可以让Bean自行负责验证的工作,可以在Bean上提供一个验证方法,这个方法没有传回值,并可以接收FacesContext、UIComponent、Object三个参数,例如:
package bruce.zhao;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
public class UserBean {
....
public void validate(FacesContext context,
UIComponent component,
Object obj)
throws ValidatorException {
String password = (String) obj;
if(password.length() < 6) {
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_ERROR,
"字符长度小于6",
"字符长度不得小于6");
throw new ValidatorException(message);
}
if(!password.matches(".+[0-9]+")) {
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_ERROR,
"密码必须包括字符与数字",
"密码必须是字符加数字所组成");
throw new ValidatorException(message);
}
}
}
接着可以在页面下如下使用验证器:
....
<h:inputSecret value="#{user.password}" required="true" validator="#{user.validate}"/>
....
分享到:
相关推荐
### JSF入门知识点详解 #### 一、JSF概述 **1.1 简介JSF** JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的复杂性,...
- JSF还支持自定义组件,以满足特定需求。 3. **Facelets和视图** - Facelets是JSF的默认视图表示技术,用于创建可重用的、XML-based的UI模板。 - 视图是由UI组件组成的,这些组件通过EL(Expression Language)...
自定义验证器也可以通过@FacesValidator注解创建,以满足特定的业务规则。 JSF通过组件化、事件驱动和声明式编程,极大地降低了Web开发的复杂性。尽管它有一定的学习曲线,但一旦熟悉了JSF的工作原理,开发者就能更...
5. **数据验证**:JSF内置了数据验证机制,可以使用注解或自定义验证器对用户输入进行检查。这有助于确保数据的质量和一致性。 6. **EL(Expression Language)**:EL是JSF中的表达式语言,它允许在页面上直接访问...
这篇文档将引导你逐步入门JSF,从基础概念到实际应用,为你提供全面的学习指导。 ### 1. 入门 #### 1.1 简介 JSF JSF 是一种组件模型框架,它将UI元素(如按钮、文本框等)抽象为组件,允许开发者通过编程或XML...
JSF内置了标准转换器和验证器,同时允许自定义转换器和验证器来满足特定需求。错误信息处理也是JSF的一部分,可以在数据转换或验证失败时提供反馈。 5. 事件处理 JSF支持多种类型的事件,包括动作事件(Action ...
1. **JSF入门教程**:JSF的基础知识讲解,涵盖了JSF的基本概念、架构和工作原理。这个部分将教你如何配置JSF环境,创建第一个JSF应用,理解JSF生命周期,以及认识JSF的核心组件如输入字段、按钮、表单等。通过这个...
自定义验证器可以通过实现`javax.faces.validator.Validator`接口创建。 ### 3.3 验证器 验证器用于检查用户输入的合法性,可以通过在Managed Bean的属性上使用`@Validations`注解或在faces-config.xml中配置来指定...
类似于自定义转换器,开发者也可以创建自定义验证器来满足更复杂的验证需求。通过实现Validator接口并定义validate方法,可以实现自定义的验证逻辑。 ##### 3.5 错误信息处理 在数据验证失败时,JSF会自动显示默认...
### JSF入门教程知识点概述 #### 一、JSF简介 **1.1 简介JSF** JavaServer Faces (JSF) 是一种用于构建Java Web应用的标准框架,它旨在简化用户界面的开发,特别是在处理HTTP无状态特性和表单处理等方面。JSF的...
6. 验证和转换:介绍如何添加自定义验证规则和数据转换。 7. 页面导航和流程控制:讲述如何在JSF应用中管理页面间的跳转。 8. 事件处理:说明如何监听和响应用户事件。 9. 深入理解JSF生命周期:详细解析JSF组件的六...
### JSF入门 JSF的核心概念是组件模型,它将网页元素如按钮、文本框等视为可复用的组件。这些组件可以独立于视图层逻辑进行管理,提高了开发效率和代码的可维护性。JSF使用XML格式的文件(Faces Config)来配置和...
开发者也可以自定义转换器和验证器以满足特定需求。 3. **事件处理**: JSF使用事件驱动模型,允许开发者响应用户的交互。当用户操作如按钮点击发生时,JSF会触发相应的事件,开发者可以注册监听器来处理这些事件...
**3.4 自定义验证器** 类似于自定义转换器,开发者可以实现`javax.faces.validator.Validator`接口来创建自己的验证逻辑。 **3.5 错误信息处理** 当验证失败时,JSF会自动显示错误信息。开发者可以自定义错误消息并...