`

如何创建自定义验证器?

    博客分类:
  • JSF
阅读更多
下面是一个email验证器的示例:  

EmailValidator.java:

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 EmailValidator implements Validator {
 
    private String errorMessage = null;
 
    public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
 
    public void validate(FacesContext context, UIComponent component, Object value) {
        if (null == value) {
            return;
        }
 
        String email = (Stringvalue;
 
        if (-== email.indexOf('@'1|| -== email.indexOf('.')) {
            if (errorMessage != null) {
                throw new ValidatorException(new FacesMessage(Tags.eval(errorMessage)));
            else {
                // use default validator message
                throw new ValidatorException(null);
            }
        }
    }
}

Tags.java:

import javax.faces.application.Application;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.el.MethodBinding;
import javax.faces.el.ValueBinding;
import javax.faces.event.ValueChangeEvent;
import javax.faces.webapp.ConverterTag;
import javax.faces.webapp.UIComponentTag;
 
public class Tags {
   // Converter Tags and Validator Tags helper methods
    public static String eval(String expression) {
        if (expression != null && UIComponentTag.isValueReference(expression)) {
            FacesContext context = FacesContext.getCurrentInstance();
            Application app = context.getApplication();
            ValueBinding vb = app.createValueBinding(expression);
            return "" + vb.getValue(context);
        else {
            return expression;
        }
    }
}

 

 

 

EmailValidatorTag.java:

import javax.faces.component.UIComponent;
import javax.faces.validator.Validator;
import javax.faces.webapp.ValidatorTag;
import javax.servlet.jsp.JspException;
 
public class EmailValidatorTag extends ValidatorTag {
 
    private String errorMessage = null;
 
    public EmailValidatorTag() {
        setValidatorId("Email");
    }
 
    public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; }
 
    public Validator createValidator() throws JspException {
        EmailValidator validator = (EmailValidatorsuper.createValidator();
        validator.setErrorMessage(errorMessage);
 
        return validator;
    }
 
    public void release() {
        errorMessage = null;
    }
}

 

 

faces-config.xml:

<validator>
    <validator-id>Email</validator-id>
    <validator-class>EmailValidator</validator-class>
</validator>

mytags.tld:

<?xml version="1.0" encoding="UTF-8"?>
 
<!DOCTYPE taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
 
<taglib>
 
<tlibversion>1.0</tlibversion>
<jspversion>1.2</jspversion>
<shortname>mytags</shortname>
<uri>mytags</uri>
 
<tag>
    <name>validateEmail</name>
    <tagclass>EmailValidatorTag</tagclass>
 
    <attribute>
        <name>errorMessage</name>
        <description>message if a validation error occurs</description>
    </attribute>
</tag>
 
</taglib>

 

mypage.jsp:

<h:inputText id="email" required="true">
    <mytags:validateEmail errorMessage="#{bean.message}"/>
</h:inputText>
分享到:
评论

相关推荐

    TIA博途Wincc中如何自定义登录界面?.docx

    在TIA博途Wincc中,自定义登录界面是一个实用的功能,它允许用户根据实际需求设计个性化的登录体验。下面将详细介绍如何实现这一过程。 首先,我们从概述开始。默认情况下,TIA博途Wincc提供了标准的用户登录界面,...

    JSP 自定义验证器

    本文将详细介绍如何在JSP应用中创建和使用自定义验证器。 #### 二、自定义验证器的实现原理 自定义验证器的核心在于实现`javax.faces.validator.Validator`接口。该接口定义了一个`validate`方法,用于执行实际的...

    jsf验证器与自定义验证

    然而,内置验证器可能无法满足所有复杂业务需求,这就需要我们创建自定义验证器。自定义验证器是实现了`javax.faces.validator.Validator`接口的Java类,通过实现`validate`方法来执行特定的验证逻辑。我们可以将...

    72、自定义验证器1

    在我们的示例中,我们将创建一个名为 FileManagedValidator 的自定义验证器,该验证器将验证用户上传的文件类型是否为图像类型。首先,我们需要使用 Symfony 的命令行工具创建一个新的验证器类: ``` symfony ...

    JSF自定义转换器验证器实例

    创建自定义验证器,你需要实现`javax.faces.validator.Validator`接口。下面是一个简单的验证器示例,确保输入的年龄在18到60之间: ```java import javax.faces.component.UIComponent; import javax.faces....

    ASP.NET自定义验证控件

    ASP.NET自定义验证控件是开发Web应用程序时常用的一种技术,它允许开发者根据特定业务需求创建个性化的验证规则。在ASP.NET中,验证控件是一个非常重要的组成部分,它确保用户输入的数据符合预设的格式和标准,从而...

    JSF1.2自定义验证器的实现

    本文将深入探讨如何在JSF 1.2中创建和使用自定义验证器。 自定义验证器是JSF中的一个重要特性,它允许开发者扩展内置的验证功能,以满足项目中特殊的业务需求。自定义验证器通常是一个实现了`javax.faces.validator...

    struts验证器validator使用,以及自定义验证器

    本文将详细介绍Struts验证器Validator的使用,包括基础配置、自定义验证器的创建,以及如何在Maven项目中管理和使用Eclipse进行编译。 **一、Struts验证器Validator的基本概念** Struts Validator是Struts框架提供...

    自定义验证控件 JS+.net

    在.NET中,可以创建自定义验证器类,继承自`System.Web.UI.WebControls.BaseValidator`,重写`EvaluateIsValid`方法实现业务逻辑。这样,即使客户端验证被绕过,服务器仍能确保数据的正确性。 5. **整合前后端**:...

    如何自定义验证器(完整源码)

    struts2中自定义验证器的使用,我自己写的一个完整代码,详细的展示了如何写自定义验证器以及使用和注意事项,代码解压后可以直接部署到MyEclipse上运行,相信你看完后也能很快掌握如何自定义验证器以及它的使用。

    struts 2.0自定义验证器

    自定义验证器允许开发者根据特定业务需求创建自己的验证规则,从而提高代码的复用性和灵活性。 ### 自定义验证器的步骤 1. **创建验证类(Validator Class)** 自定义验证器通常是一个实现了`org.apache.struts2....

    Jquery自定义验证

    **jQuery自定义验证**是一种强大的前端验证解决方案,它允许开发者根据项目需求定制验证规则和提示信息,提升用户体验。本文将深入探讨jQuery自定义验证的核心概念、功能和应用场景,以及如何利用正则表达式和非空...

    java 自定义注解验证

    Java 自定义注解验证是Java开发中的一个重要特性,它允许开发者创建自己的元数据,以便在编译时或运行时对代码进行验证和处理。自定义注解为代码提供了额外的信息,使得程序更具可读性、可维护性和灵活性。在本案例...

    struts2 自定义验证程序的实现方法详解

    Struts2 提供了一个强大的验证框架,允许用户创建自定义验证器来满足各种需求。 #### 二、自定义验证程序的实现 ##### 1. 实现 Validator 接口 为了实现自定义的验证器,首先需要继承或实现 Struts2 的 Validator...

    简单JS自定义验证提示效果

    【标题】"简单JS自定义验证提示效果"主要涉及到JavaScript中的表单验证和用户体验优化,这两部分是网页开发中至关重要的知识点。 JavaScript是一种轻量级的、解释型的编程语言,广泛应用于网页和网络应用开发。在...

    openapi自定义验证框架

    4. **生成验证器**:使用OpenAPI工具(如OpenAPI Generator)生成包含自定义验证逻辑的客户端和服务端代码。 5. **测试验证**:在实际的API调用中使用生成的验证器,确保自定义验证规则生效,并能捕获预期的错误...

    自定义验证框架

    自定义验证框架是Struts的一个强大功能,允许开发者根据特定的业务需求定制验证逻辑。以下将详细介绍如何在Struts中实现自定义验证框架,以及其关键组件和工作流程。 1. **配置验证规则**: 在Struts中,验证规则...

    Asp.Net 自定义验证码控件

    要实现这样一个自定义的验证码控件,我们首先要创建一个新的类,继承自ASP.NET的基础控件`System.Web.UI.WebControls.WebControl`。在这个类中,我们将实现以下关键功能: 1. **生成随机字符串**:使用`Random`类和...

    Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中

    自定义验证是ActiveModel的一个强大特性,允许开发者根据需求创建自己的验证规则。在这个场景下,我们可能有一个模型,它的某个属性是一个数组,我们需要确保这个数组的所有元素都存在于另一个预定义的数组中。这种...

    自定义jquery easyui 验证

    jQuery EasyUI 是一个基于 jQuery 的用户界面插件集合,它包含了一系列丰富的 UI 组件,并且支持自定义验证规则。本文将详细介绍如何自定义 jQuery EasyUI 的验证规则,并通过具体示例来说明各个验证规则的功能与...

Global site tag (gtag.js) - Google Analytics