`

jsf-自定义验证器

阅读更多
检验必要的两种验证是语法检验(Synatic Validation)与语意检验(Semantic Validation).
语法检验是要检查使用者输入的数据是否合乎我们所要求的格式,最基本的就是检查使用者是否填入了栏目值,或是栏目值的长度、大小值等等是否符合要求。语意检验是在语法检验之后,在格式符合需求之后,我们进一步验证使用者输入的数据语意上是否正确,例如检查使用者的名称与密码是否匹配。
JSF除了<f:validateDoubleRange>、<f:validateLongRange>、<f:validateLength>三种标准验证器之外,还可以通过实现javax.faces.validator.Validator接口自定义验证器:
• 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
<?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
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}"/>
....
1
1
分享到:
评论

相关推荐

    jsf-api-2.0.3.jar.zip_jsf api_jsf jar包_jsf-api-2.0.3.jar_jsf-api

    开发者可以引用这些接口来创建自定义组件,实现事件监听器,以及进行数据绑定和验证。 在实际开发中,为了确保项目顺利运行,开发者需要将`jsf-api-2.0.3.jar` 和其他必要的JSF库添加到项目的`WEB-INF/lib`目录下,...

    jsf相关jar包 jsf-api.jar jsf-impl.jar

    这些接口定义了JSF的组件、事件、转换器、验证器等核心功能。通过这个API,开发者可以创建自定义的JSF组件,处理用户事件,以及实现数据的转换和验证。此外,它还包含JSF生命周期和渲染树的概念,使得开发者能理解...

    jsf-api.jar

    6. **Lifecycle**: JSF有自己的一套生命周期,包括初始化、恢复视图、应用请求值、处理事件、更新模型值、验证、渲染响应等多个阶段。开发者可以在特定阶段插入自定义的行为。 7. **Converter和Validator**: ...

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

    在JSF 1.2版本中,为了确保数据输入的正确性和一致性,开发者可以自定义验证器来实现特定的数据验证逻辑。本文将深入探讨如何在JSF 1.2中创建和使用自定义验证器。 自定义验证器是JSF中的一个重要特性,它允许...

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

    在这个例子中,`customIntegerConverter`是自定义转换器的ID,`ageValidator`是自定义验证器的ID。你需要在你的应用上下文中注册这些ID对应的类。 总的来说,JSF的自定义转换器和验证器允许开发者根据项目需求定制...

    jsf-api.jar.zip

    4. **转换和验证**:JSF提供了一种机制来处理数据的转换和验证,确保输入数据的正确性。 5. **EL(Expression Language)**:JSF集成EL,用于在页面中访问JavaBean或其他后台资源,简化表达式编写。 6. **...

    jsf验证器与自定义验证

    JSF 提供了一种强大的机制来处理表单验证,包括内置的验证器和自定义验证器。这篇博客文章“jsf验证器与自定义验证”深入探讨了这些概念,并可能提供了实现细节和示例代码。 首先,JSF 内置的验证器是预定义的,...

    JSF-Java-jar包

    - 一些内建的转换器和验证器,用于数据验证和格式化。 - `Lifecycle`接口的实现,定义了JSF的六阶段生命周期:恢复视图、应用请求值、处理验证、更新模型值、调用应用事件和渲染响应。 3. **JSF工作原理**: 当...

    jsf-api-1.2

    **转换和验证** 在JSF 1.2中也是必不可少的。转换允许开发者将表单数据从一种类型转换为另一种类型,以适应不同的数据格式。验证则确保用户输入的数据符合预期的约束,例如非空检查、长度限制等。 **导航系统** ...

    jsf1.2 source code

    开发者可以使用这些接口来创建自定义组件,实现监听器,以及处理请求和响应。 ### 2. `jsf-ri` `jsf-ri`代表了JSF的参考实现(Reference Implementation)。它是JSF规范的具体实现,提供了所有API接口的实现细节。...

    jsf-完整的标签和API

    **JSF小项目源代码**:这些源码可以用来学习如何在实际项目中运用JSF,包括但不限于页面布局、表单处理、数据验证、AJAX交互等。通过阅读和运行这些代码,开发者可以加深对JSF工作原理的理解,并掌握其实际应用技巧...

    jsf-api-src.zip

    JavaScript Server Faces(JSF)是Java平台上用于构建用户界面的模型-视图-控制器(MVC)框架。JSF API提供了丰富的组件库和事件处理机制,使得开发人员能够轻松创建Web应用程序。`jsf-api-src.zip`是一个压缩包,...

    ajax4jsf-demo

    - **配置应用**:在web.xml中配置Ajax4JSF的过滤器和监听器,以启用Ajax功能。 - **测试和调试**:运行应用,通过浏览器查看和测试Ajax效果,进行必要的调整和优化。 **6. 高级特性** Ajax4JSF还支持自定义组件和...

    jsf-impl.jar.zip

    **JSF与MVC模式** JSF采用了模型-视图-控制器(MVC)设计模式,其中组件相当于视图,后台bean扮演模型角色,而JSF的生命周期处理则负责控制器的功能。 **自定义组件** 开发者可以通过继承JSF的UIComponent类来创建...

    jsf-validation.zip_JSF_jsf validation_zip

    1. **验证器Bean(Validator Beans)**:这是自定义验证逻辑的实体,它们实现了`javax.faces.validator.Validator`接口,包含一个`validate`方法,该方法会在数据提交时被调用,进行具体的验证操作。 2. **验证规则...

    jsf-demo练兵

    在JSF项目中,你会找到表示层(Faces Beans)、控制层(Managed Beans)以及任何自定义的Java组件。 4. **bin**:这个目录通常存放编译后的Java类文件和其他资源文件。在构建过程中,`src`目录中的源码会被编译并...

    JSF-UIREPEAT

    这意味着你可以放心地使用和学习这个示例,因为它已经被验证是有效的。 **源代码** 可能包括一个或多个Java类、JSF视图(`.xhtml`文件)和可能的配置文件,展示了如何使用UIRepeat组件。通过查看和分析这些源代码,...

    第7章 JSF转换器和验证器与实例程序

    JSF提供了一系列内置的验证器,如非空验证、长度验证、数字验证等,同时也支持自定义验证器。自定义验证器可以通过实现`javax.faces.validator.Validator`接口或使用`@FacesValidator`注解进行创建。 ...

    JSF-2-Hello-World-Example.zip

    8. **Conversion and Validation**:JSF提供了一套内置的转换器和验证器,用于确保输入数据的正确性。 9. **Composite Components**:允许开发者创建自定义组件,复用和组合现有的JSF组件。 在这个"JSF-2-Hello-...

Global site tag (gtag.js) - Google Analytics