JSF Validator入门基础篇 - JSF Validator的介绍与使用
2007-12-19 22:22Update
JSF框架提供Validator机制,对用户输入值的合法性进行验证。若用户输入值无效,还提供了错误消息显示功能,以帮助用户能正确输入。
在开始本文之前,建议阅读下面的文章:
深入了解JSF
深入了解JSF(二):从JSF的Lifecycle看JSF对页面的处理机制和流程
以了解JSF的概念等。
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接口。本文的后面将对其作详细介绍。
Validator标签名:f:validateDoubleRange标签。
属性名:
maximum="最大值"
minimum="最小值"
Validator ID:javax.faces.DoubleRange
Validator 类:javax.faces.validator.DoubleRangeValidator
输入值的范围验证。
输入值必须为Number(数值)类型或者可以转换为Double类型的值
Validator标签名:f:validateLongRange
属性名:
maximum="最大值"
minimum="最小值"
Validator ID:javax.faces.LongRange
Validator 类:javax.faces.validator.LongRangeValidator
输入值的范围验证。
输入值必须为Number(数值)类型或者可以转换为Long类型的值
Validator标签名:f:validateLength
属性名:
maximum="最大值"
minimum="最小值"
Validator ID:javax.faces.Length
Validator 类:javax.faces.validator.LengthValidator
输入值的长度验证。
输入值必须为String(字符串)或者可以转换为String类型的值
JSF required(必须输入) Validator
JSF的几个输入组件还可以使用required属性简单地验证表单元素是否得到输入。
<h:inputHidden required="true/false"></h:inputHidden>
<h:inputSecret required=“true/false”></h:inputSecret>
<h:inputText required=“true/false”></h:inputText>
<h:inputTextarea required=“true/false”></h:inputTextarea>
<h:selectBooleanCheckbox required=“true/false”></h:selectBooleanCheckbox>
<h:selectManyCheckbox required=“true/false”></h:selectManyCheckbox>
<h:selectManyListbox required=“true/false”></h:selectManyListbox>
<h:selectManyMenu required=“true/false”></h:selectManyMenu>
<h:selectOneListbox required=“true/false”></h:selectOneListbox>
<h:selectOneMenu required=“true/false”></h:selectOneMenu>
<h:selectOneRadio required=“true/false”></h:selectOneRadio>
JSF支持Method级别的Validator,这种Validator实现起来比较简单,可以在任何JSF的managed-bean里实现一个类似以下的方法:
其中,context变量为JSF容器上下文环境,component为绑定的组件,value为组件的输入值。validateXxxx可以为任意你喜欢的方法名。与预期的输入值不符合的话,可以通过throw一个ValidatorException。"some message"便是想要显示的错误消息。
然后在JSP中:
便可。
错误消息的显示稍后再作介绍。
Validator标签可以接收参数,所以功能上比较强大,也比较灵活。同时,除了使用JSF标准的Validator标签之外,你还可以自定义Validator标签。关于自定义Validator标签我们将在另外的文章中加以介绍。
Validator标签的使用例:
上例对id为xxxxValue的输入框组件的输入值做double范围验证,指定范围最大值为5。超过5的情况则显示错误消息,错误消息可以使用<h:message />或者<h:messages />标签显示。有关消息处理的详细介绍请参考:
JSF全面理解之消息处理
一文
除了以上2种验证方法之外,还可以使用f:validator标签对输入值加以验证。f:validator标签需要指定validatorId属性,Validator Id需要在faces-config.xml配置文件中加以配置。
f:validator标签的使用例:
"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
深入了解JSF(二):从JSF的Lifecycle看JSF对页面的处理机制和流程
以了解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属性简单地验证表单元素是否得到输入。
<h:inputHidden required="true/false"></h:inputHidden>
<h:inputSecret required=“true/false”></h:inputSecret>
<h:inputText required=“true/false”></h:inputText>
<h:inputTextarea required=“true/false”></h:inputTextarea>
<h:selectBooleanCheckbox required=“true/false”></h:selectBooleanCheckbox>
<h:selectManyCheckbox required=“true/false”></h:selectManyCheckbox>
<h:selectManyListbox required=“true/false”></h:selectManyListbox>
<h:selectManyMenu required=“true/false”></h:selectManyMenu>
<h:selectOneListbox required=“true/false”></h:selectOneListbox>
<h:selectOneMenu required=“true/false”></h:selectOneMenu>
<h:selectOneRadio required=“true/false”></h:selectOneRadio>
JSF Validator的使用
各输入组件使用required validator的方法上面已经作了介绍,这里不再重复。使用Method Validator
JSF支持Method级别的Validator,这种Validator实现起来比较简单,可以在任何JSF的managed-bean里实现一个类似以下的方法:
public void validateXxxx(FacesContext context,
UIComponent component, Object value){
String text = value.toString();
if(!text.equals("xxxx")){
throw new ValidatorException(new FacesMessage("some message"));
}
}
其中,context变量为JSF容器上下文环境,component为绑定的组件,value为组件的输入值。validateXxxx可以为任意你喜欢的方法名。与预期的输入值不符合的话,可以通过throw一个ValidatorException。"some message"便是想要显示的错误消息。
然后在JSP中:
<h:inputText value="#{mybean.someValue}" validator="#{mybean.validateXxxx}"/>
便可。
错误消息的显示稍后再作介绍。
Validator标签的使用
Validator标签可以接收参数,所以功能上比较强大,也比较灵活。同时,除了使用JSF标准的Validator标签之外,你还可以自定义Validator标签。关于自定义Validator标签我们将在另外的文章中加以介绍。
Validator标签的使用例:
<h:inputText id="xxxxValue" value="#{mybean.xxxxValue}" required="true">
<f:validateDoubleRange maximum="5"></f:validateDoubleRange>
</h:inputText>
<h:message for="xxxxValue"></h:message>
上例对id为xxxxValue的输入框组件的输入值做double范围验证,指定范围最大值为5。超过5的情况则显示错误消息,错误消息可以使用<h:message />或者<h:messages />标签显示。有关消息处理的详细介绍请参考:
JSF全面理解之消息处理
一文
f:validator标签的使用与Validator ID
除了以上2种验证方法之外,还可以使用f:validator标签对输入值加以验证。f:validator标签需要指定validatorId属性,Validator Id需要在faces-config.xml配置文件中加以配置。
f:validator标签的使用例:
<h:inputText id="xxxxValue" value="#{mybean.xxxxValue}" required="true">
<f:validator validatorId="Some Validator ID"></f:validator>
</h:inputText>
"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。
- Relative Articles
- JSF Validator进阶篇 - 自定义JSF Validator - (2007-12-20 19:37)
- JSF应用中捕捉managed-bean构造方法里抛出的异常 - (2007-12-17 22:46)
- JSF Converter基础篇 - JSF Converter介绍与使用 - (2007-11-04 13:33)
- 深入了解JSF - (2007-11-04 13:20)
- f:selectItems - JSF标签 f:selectItems 的使用方法 - (2007-10-25 10:53)
- JSF Converter应用篇 - 自定义JSF Converter - (2007-09-28 15:04)
- 开发JSF应用的基本流程与方法 - (2007-08-15 00:51)
- JSF应用单点权限认证的构建与实现 - (2007-06-14 23:37)
- 深入了解JSF(二):从JSF的Lifecycle看JSF对页面的处理机制和流程 - (2007-06-01 16:39)
- JSF全面理解之消息处理 - (2007-05-30 16:32)
- JSF本地化策略 - (2007-05-29 17:42)
- JSF 5分钟入门:Hello World! - (2007-05-29 00:40)
- 推荐一个FacesUtils工具类 - (2007-05-29 00:40)
- 从JSF的切入点控制JSF - (2007-05-29 00:40)