jsf validator(转) -凯发k8网页登录

--- 博客已迁移至:

  凯发k8网页登录-凯发天生赢家一触即发官网 :: 凯发k8网页登录首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  618 随笔 :: 87 文章 :: 225 评论 :: 0 trackbacks

jsf validator入门基础篇 - jsf validator的介绍与使用

jsf框架提供validator机制,对用户输入值的合法性进行验证。若用户输入值无效,还提供了错误消息显示功能,以帮助用户能正确输入。

在开始本文之前,建议阅读下面的文章:


以了解jsf的概念等。

jsf validator图:


jsf validator特点:
输入数据的验证放在服务器端进行。
需要验证输入值的组件(输入组件)在jsp里通过jsf标签加以设置,方法简单直观。
每个输入组件可以同时绑定多个validator。
验证发生错误时,可以向facescontext登录错误信息,并且可以通过jsp直接显示。显示风格与位置可以自由设定。
验证错误时,jsf的生命周期控制机制自动中止处理流程,跳转到画面描画阶段(render response phase)。
jsf标准提供对数值(long, double)的最大最小值验证,文字列的最大最小长度验证,以及必须(required)验证等validator。
支持用户自定义validator。用户自定义validator的方法有2种,一种是method validator,一种是实现javax.faces.validator.validator接口。本文的后面将对其作详细介绍。


jsf标准validator

validatedoublerange


validator标签名:f:validatedoublerange标签。
  属性名:
      maximum="最大值"
      minimum="最小值"
validator id:javax.faces.doublerange
validator 类:javax.faces.validator.doublerangevalidator
输入值的范围验证。
输入值必须为number(数值)类型或者可以转换为double类型的值

validatelongrange


validator标签名:f:validatelongrange
  属性名:
      maximum="最大值"
      minimum="最小值"
validator id:javax.faces.longrange
validator 类:javax.faces.validator.longrangevalidator
输入值的范围验证。
输入值必须为number(数值)类型或者可以转换为long类型的值

validatelength


validator标签名:f:validatelength
  属性名:
      maximum="最大值"
      minimum="最小值"
validator id:javax.faces.length
validator 类:javax.faces.validator.lengthvalidator
输入值的长度验证。
输入值必须为string(字符串)或者可以转换为string类型的值


jsf required(必须输入) validator
jsf的几个输入组件还可以使用required属性简单地验证表单元素是否得到输入。













jsf validator的使用
各输入组件使用required validator的方法上面已经作了介绍,这里不再重复。

使用method validator


jsf支持method级别的validator,这种validator实现起来比较简单,可以在任何jsf的managed-bean里实现一个类似以下的方法:
  1. public void validatexxxx(facescontext context,   
  2.         uicomponent component, object value){  
  3.   
  4.     string text = value.tostring();  
  5.     if(!text.equals("xxxx")){  
  6.         throw new validatorexception(new facesmessage("some message"));  
  7.     }  
  8. }  

其中,context变量为jsf容器上下文环境,component为 绑定的组件,value为组件的输入值。validatexxxx可以为任意你喜欢的方法名。与预期的输入值不符合的话,可以通过throw一个 validatorexception。"some message"便是想要显示的错误消息。

然后在jsp中:
  1.   

便可。
错误消息的显示稍后再作介绍。


validator标签的使用


validator标签可以接收参数,所以功能上比较强大,也比较灵活。同时,除了使用jsf标准的validator标签之外,你还可以自定义validator标签。关于自定义validator标签我们将在另外的文章中加以介绍。
validator标签的使用例:
  1.   
  2.    
  3.   
  4.   

上 例对id为xxxxvalue的输入框组件的输入值做double范围验证,指定范围最大值为5。超过5的情况则显示错误消息,错误消息可以使 用或者标签显示。有关消息处理的详细介绍请参考:

一文

f:validator标签的使用与validator id


除了以上2种验证方法之外,还可以使用f:validator标签对输入值加以验证。f:validator标签需要指定validatorid属性,validator id需要在faces-config.xml配置文件中加以配置。


f:validator标签的使用例:
  1.   
  2.     
  3.   

"some validator id"为具体的validator id,我们将在自定义validator标签一文中对validator id做详细介绍。

jsf框架将调用指定validator id所对应的validator的
public void validate(facescontext context, uicomponent component, object value)
方法。

跟method validator一样,不能f:validator标签传入参数。

本文介绍了jsf validator的机制,特点,种类,以及使用方法等。我们将在近期其它文章中介绍怎么自定义validator。

jsf框架提供validator机制,对用户输入值的合法性进行验证。若用户输入值无效,还提供了错误消息显示功能,以帮助用户能正确输入。


在   一文中我们介绍了jsf validator的机制,特点,种类,以及使用方法等。

本文将介绍怎么自定义validator和validator标签。

自定义validator有2种方法:一种是method validator,我们在  一文中已作了介绍,这里不再详述;另一种是通过实现validator接口,也就是使用自定义的validator类。

自定义validator类与validator标签有以下几个步骤:
自定义validator类的实现
faces-config.xml登录
自定义validator标签类
设置tld文件


自定义validator类的实现
定义一个类,该类实现javax.faces.validator.validaotr接口:

myvalidator.java
  1. package com.mypackages;  
  2.   
  3. import javax.faces.validator.validaotr;  
  4.   
  5. public class myvalidator implements validator {  
  6.     public void validate(facescontext context, uicomponent component, object value)  
  7.             throws validatorexception {  
  8.   
  9.         string text = value.tostring();  
  10.         if(!text.equals("xxxx")){  
  11.             throw new validatorexception(new facesmessage("some message"));  
  12.         }  
  13.     }  
  14.   
  15.     ... //其它参数设置,方法等(略)  
  16. }  


faces-config.xml登录
自定义validator类之后,还得向faces-config.xml登录之后才能使用。
faces-config.xml
  1.   
  2.   "-//sun microsystems, inc.//dtd javaserver faces config 1.0//en"  
  3.   "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">  
  4.   
  5.   
  6.   
  7.       
  8.         myvalidator  
  9.         com.mypackages.myvalidator  
  10.       
  11.   


经过上面2个步骤,就可以使用myvalidator了。
例:

  


自定义validator标签类
上面的myvalidator虽然可以通过f:validator标签加以利用, 但不能向其传入参数,若要向其传入参数,则需要定义自定义validator标签类。
myvalidatortag.java
  1. package com.mypackages;  
  2.   
  3. import javax.faces.webapp.validatortag;  
  4.   
  5. public class myvalidatortag extends validatortag{  
  6.   
  7.     private string xxxparam;  
  8.       
  9.     public myvalidatortag(){  
  10.         setvalidatorid("myvalidator");  
  11.     }  
  12.       
  13.     protected validator createvalidator() throws jspexception {  
  14.         myvalidator validator =  (myvalidator)super.createvalidator();  
  15.         validator.setxxxparam(xxxparam);  
  16.         return validator;  
  17.     }  
  18.   
  19.     public string getxxxparam() {  
  20.         return xxxparam;  
  21.     }  
  22.   
  23.     public void setxxxparam(string xxxparam) {  
  24.         this.xxxparam = xxxparam;  
  25.     }  
  26. }  

另外,为myvalidator.java加入相应参数及方法实现。

tld文件
定义好validator标签类之后,还需要在tld文件设置,有关tld这里就不介绍了。请大家参考相关资料。

myvalidator.tld
  1.   
  2.   public "-//sun microsystems, inc.//dtd jsp tag library 1.2//en"  
  3.   "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">  
  4.   
  5.     1.0  
  6.     1.2  
  7.     myv  
  8.     my validator tag  
  9.     my validator tag  
  10.   
  11.       
  12.         validatemydata  
  13.         com.mypackages.myvalidatortag  
  14.           
  15.             xxxparam  
  16.             false  
  17.           
  18.       
  19.   


自定义validator标签的使用
web.xml
  1.    
  2.   /web-inf/myvalidator.tld  
  3.   /web-inf/myvalidator.tld  
  4.    



jsp
  1. <%@ taglib uri="web-inf/myvalidator.tld" prefix="myv" %>  
  2.   
  3. ...  
  4.   
  5.   
  6.       
  7.   

posted on 2009-04-14 10:58 seal 阅读(3731) 评论(1)     所属分类: seam
# re: jsf validator(转) 2015-10-15 14:40
adsfasdfasdfadsfsdfadsf  回复  
  


只有注册用户后才能发表评论。


网站导航:
              
相关文章:
 
网站地图