`
yingfang05
  • 浏览: 123404 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JSF里自订验证器

    博客分类:
  • jsf
阅读更多
您可以自订自己的验证器,所需要的是实作javax.faces.validator.Validator接口,例如我们实作一个简单的密码验证器,检查字符长度,以及密码中是否包括字符与数字:
PasswordValidator.java
PasswordValidator.java
package onlyfun.caterpillar;

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),要加入以下的内容:

faces-config.xml
faces-config.xml
<?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>
            onlyfun.caterpillar.Password
        </validator-id>
        <validator-class>
            onlyfun.caterpillar.PasswordValidator
        </validator-class>
    </validator>
....
</faces-config>
  要使用自订的验证器,我们可以使用<f:validator>卷标并设定validatorId属性,例如:

....
<h:inputSecret value="#{user.password}" required="true">
    <f:validator validatorId="onlyfun.caterpillar.Password"/>
</h:inputSecret><p>
....
  您也可以让Bean自行负责验证的工作,可以在Bean上提供一个验证方法,这个方法没有传回值,并可以接收FacesContext、UIComponent、Object三个参数,例如:

UserBean.java
UserBean.java
package onlyfun.caterpillar;

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基础教程 简体中文

    o 自订验证器 o 错误讯息处理 o 自订转换, 验证标签 事件处理 JSF的事件模型提供一个近似的桌面GUI事件模式,让熟悉GUI设计的人员也能快速上手Web程序设计。 o 动作事件 o 实时事件 o 值变事件 o Phase 事件  JSF...

    JSF入门级教程

    15. 自订验证器 对于更复杂的验证需求,可以创建自定义验证器,通过实现Validator接口,实现特定的验证规则。 总之,JSF提供了一个全面的框架,使Web开发变得更加简单和有序。通过理解和实践本教程,你将能够熟练地...

    JSF从零进阶

    - **验证器和转换器**:验证器用于确保用户输入的数据符合预期格式或规则,而转换器则是将用户输入的数据转换为适当的类型。通过具体示例展示了这两种组件的应用场景。 - **国际化**:为了支持多种语言和地区,JSF...

    JSF入门精通超级好的教程

    - **自订验证器**:教授如何创建自定义验证器以执行特定的验证逻辑。 - **错误讯息处理**:讲解了如何处理验证失败时产生的错误消息。 - **事件处理**: - **动作事件**:当用户执行某个操作时触发的事件,如...

    JSF入门教材简体中文版(html版 pdf版)

    遗憾的是,描述中提到PDF版缺少了"自订元件"一章,这意味着你将无法从该版本中学习到有关自定义JSF组件的详细信息。不过,HTML版完整,你可以通过它来弥补这部分的缺失。 总之,JSF入门教材是初学者了解和掌握JSF...

    JSF实例学习--比萨(pizza)订购系统

    你可以通过注解或XML配置文件定义自定义的转换器和验证器,例如确保用户输入的比萨数量是正整数,或者比萨类型存在于预定义的列表中。 此外,JSF支持**导航规则**,定义了在用户操作后如何跳转到下一个页面。在比萨...

    jsf,spring酒店预定管理系统

    JSF的生命周期包括六个阶段:恢复视图、应用请求值、处理验证、更新模型值、调用应用事件和渲染响应。 在本酒店预定管理系统中,JSF可能被用来创建预订页面,用户可以输入入住日期、离店日期、房间类型等信息,并...

    基于JSF+EJB+JPA实现的酒店预订系统.7z

    在JSF中,视图由JSF页面(通常是XHTML文件)组成,而模型和控制器则通过Managed Beans来实现。在这个酒店预订系统中,JSF可能会被用来创建用户友好的预订表单,处理用户的输入,以及显示预订结果。 【EJB...

    jsf 学习源码pizzaria

    **MyFaces** 是JSF规范的一个开源实现,它提供了全面的JSF功能,包括UI组件、渲染器、生命周期管理等。MyFaces以其轻量级、高性能和社区活跃度而受到开发者欢迎,是JSF应用开发的常见选择。 **JSF的工作原理**: 1....

    良葛格JSF学习笔记.pdf

    - **验证器**:确保输入的数据符合特定的格式或规则,如邮箱格式验证、必填字段检查等。 **2.4 事件处理** - **事件模型**:JSF提供了一种类似于桌面GUI应用程序的事件处理机制,支持多种类型的事件,如动作事件、...

    jsf实例

    3. **生命周期**: JSF具有清晰的请求处理生命周期,包括初始化、应用请求值、处理验证、更新模型值、调用应用程序和渲染响应等阶段。 4. **集成视图技术**: JSF支持多种视图技术,如JSP、Facelets,以及与富互联网...

    JSFweb开发技术入门基础教程

    自订组件 JSF 支持创建自定义组件,这使得开发人员可以根据需求创建具有特定功能的组件。 ##### 7.1 JSF 生命周期与组件概述 为了创建自定义组件,需要了解 JSF 的生命周期及其组件模型。JSF 的生命周期包括了多...

    利用JSF应对应用程序开发的未来[整理].pdf

    3. **输入验证组件**:JSF内建了验证机制,可以在用户输入时实时检查数据的有效性,减少服务器端的无效请求。 4. **自动化Bean管理**:JSF管理Bean的生命周期,包括实例化、初始化、销毁等,开发者无需过多关注这些...

    java server face 教程

    **自订验证器** - **自定义逻辑**:解释如何开发自定义验证器来实现更为复杂的验证逻辑。 - **实战案例**:通过实际案例展示自定义验证器的开发过程。 **错误讯息处理** - **异常处理**:介绍如何在JSF中处理数据...

    easyrestaurant_jsf:专为小型餐馆开发的用于控制客户帐户的简单应用程序

    它提供了一种模型-视图-控制器(MVC)架构,使得开发者能够专注于业务逻辑,而不用过多关注页面呈现的细节。在"easyrestaurant_jsf"项目中,JSF的核心优势得到了充分展现,它使得系统能够高效地处理用户交互,提供了...

    在线pizzaria店

    【标题】:“在线pizzaria店”是一个基于JavaServer Faces(JSF)技术构建的Web应用程序,旨在模拟一个在线披萨订购系统。JSF是一种用于构建用户界面的Java EE框架,它提供了丰富的组件库和生命周期管理,使得开发...

    J2EE课程设计(酒店订房系统)-报告部分

    测试部分,报告规划了测试计划,包括单元测试和集成测试,以验证系统功能的正确性和稳定性。测试步骤详尽,确保了系统上线前的质量控制。 最后,课程设计体会部分,作者分享了开发过程中的学习和成长,强调了实际...

Global site tag (gtag.js) - Google Analytics