- 浏览: 219036 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
julyboxer:
http://www.baobao5u.com/Product ...
喝茶的十八个层次,你属于哪一层? -
xiaolong0211:
呵呵,学习了,这两天一直在装gcc,可算装上了,谢谢
Red Hat enterprise 5 gcc安装顺序 -
run_xiao:
翻译的不是很到位啊
推荐引擎mahout相关资料 -
julyboxer:
关键价值链
B2C网络站点资源梳理 -
julyboxer:
要买的书http://product.dangdang.com ...
B2C网络站点资源梳理
http://blog.csdn.net/wzw_wxx/archive/2007/01/03/1472991.aspx
http://www.qqread.com/jsp/f761108012_4.html
http://www.iteye.com/topic/15849
Ajax4Jsf 的几个小例子
http://www.iteye.com/topic/58638
jsf实现翻页
http://fourfire.iteye.com/blog/124768
JSF中并没有提供判断标签
http://sech.iteye.com/blog/137731
jsf client validators介绍
http://blog.csdn.net/yarshray/archive/2007/10/31/1859629.aspx
首先,我们在用这个验证之前,我们要做一些准备工作 :
1.把clientvalidators-X.X.jar放到类路径下面.
2.把taglib声明添加到JSP页面中
<%@ taglib uri="http://sourceforge.net/projects/jsf-comp/clientvalidators" prefix="cv"%>
3.定义组件(按钮or表单)提交时触发的JS回调函数.例如:在表单的 onSubmit函数和按钮的onClick函数 等等....
Form onSubmit
<h:form id="form1">onSubmit="return validate();" />
Button onClick
<h:commandbutton id="btn1">onClick="return validate();" />
该步骤重要
4:定义servlet映射
该组件通过/faces/* 前缀来载入需要的资源,一个JS文件. 确定你在web.xml文件中定义了
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
</h:commandbutton></h:form>详细介绍每一个验证组件的使用.
Required Field Validator
大家都不陌生的一个需求验证,要求输入内容
属性:
componentToValidate 要验证的组件id, 每个验证组件都有该属性,下面就不在介绍
errorMessage 要显示的错误消息 每个验证组件都有该属性,下面就不在介绍
highlight 是否高亮显示 true/false, 默认值为false.每个验证组件都有该属性,下面就不在介绍
display 验证错误的显示模式. 可能的值为 "static", "dynamic" (default), "none".下面会有进一步下说明. 每个验证组件都有该属性,下面就不在介绍
style 用于验证消息的CSS 每个验证组件都有该属性,下面就不在介绍
示例:
<cv:requiredfieldvalidator errormessage="Value is required" display="dynamic" highlight="true" componenttovalidate="txt1">
Range Validator 范围验证
minValue or maxValue 是必须的.
属性:
componentToValidate
minValue 输入的最小值
maxValue 输入的最大值
errorMessage
highlight
display
style
示例:
<cv:rangefieldvalidator highlight="true" maxvalue="20" minvalue="10" componenttovalidate="txt1">
Compare Validator 验证两个组件的输入值是否相等.验证两个密码的时候比较有用.
属性:
componentToValidate
componentToCompare 要比较值的另外一个组件id
operator 比较的操作, 可以为"eq" or "not". 相等或者不等.
errorMessage
highlight
display
style
示例:
<cv:comparevalidator errormessage="Value is invalid" op="not" componenttocompare="txt2" componenttovalidate="txt1">
Regular Expression Validator 正则表达式验证, 比较强大,可以验证email
属性:
componentToValidate
pattern 正则表达式模式. 参考java中的pattern类
errorMessage
highlight
display
style
示例:
<cv:regularexpressionvalidator highlight="true" pattern="/[abcd]/" componenttovalidate="txt1">
<cv:regularexpressionvalidator errormessage="请输入有效的电子邮件" highlight="true" pattern="/^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/gi" componenttovalidate="emailAddress">
</cv:regularexpressionvalidator></cv:regularexpressionvalidator></cv:comparevalidator></cv:rangefieldvalidator></cv:requiredfieldvalidator>Length Validator Validator 长度验证
属性:
componentToValidate
exactly 如果指定该值,那么输入的长度一定要等于该值的长度
min 长度的最小值
max 长度的最大值
errorMessage
highlight
display
style
示例:
<cv:lengthvalidator errormessage="Value is invalid" display="dynamic" exactly="10" componenttovalidate="txt1">
Integer Only Validator 该验证没有实现为一个组件, 而是用一个js函数来代替. 该函数显示键入的字符并且值允许字符为整数, 调用的函数必须是
keyPressNumber(false); 在onkeypress事件上调用.
例子:
属性: 没有属性
<h:inputtext onkeypress="keyPressNumber(false);" value="#{pc_Index.person.ssn}" id="txt_ssn">
Custom Validator
自定义验证, 给你提供一个扩展的接口
属性:
componentToValidate
function
自定义验证函数
params
函数的参数
errorMessage
highlight
display
style
示例:
<cv:customvalidator params="'form1:txt_custom'" function="customFunctionName" componenttovalidate="txt_custom">
以下为代码:
</cv:customvalidator></h:inputtext></cv:lengthvalidator>
属性:
style
示例:
<cv:validationsummary>
Script Generator 主要的一个负责编码验证函数调用的组件
属性:
form
要验证的form 的id
popup 是否显示验证信息为popup, 默认值为false.
示例:
<cv:scriptgenerator popup="false">
</cv:scriptgenerator></cv:validationsummary>国际化和错误消息问题
Client validators使用下面的顺序来查找错误消息
1) errorMessage 属性
首先应用该处的错误消息,可以使用值绑定表达式
2) Resource Bundle 如果在1中没有指定值,则使用这里包含在资源文件中的消息,
每个消息的key 在下面介绍
3) Built-in constant messages.
如果前面两步都没有错误消息,那么使用代码中硬编码的消息
关于display 属性的值
显示模型可以通过display属性来自定义. 下面是几种模型的解释:
dynamic
默认值,显示消息的空间(html标签)不是总是存在的,只有当错误消息出现时候才动态生成的.
static
显示消息的标签总是存在的.
none
不在组件后面显示错误消息, 只是在总结中显示总的错误消息
display 只是控制响应错误消息的div的 display css属性: 使用none时候,会产生下面的css 到该消息div上.style="DISPLAY: none"
资源绑定的消息的key
CV_REQUIRED_FIELD_VALIDATOR_ERROR = Some Text
CV_COMPARE_VALIDATOR_ERROR = Some Text
CV_RANGE_VALIDATOR_ERROR = Some Text
CV_REGULAR_EXPRESSION_VALIDATOR_ERROR = Some Text
CV_LENGTH_VALIDATOR_ERROR = Some Text
如果用过Struts框架的朋友们可能会觉得Struts框架的验证设计的非常精致,因为它可以针对每一个ActionForm的字段进行验证。可是在标准JSF框架提供的验证就显得有些片
面了,使得开发JSF应用程序需要做更多的工作。那么接下来,我将为大家介绍一组非常方便的JSF扩展组件,这一组组件是专门用来做验证框架的。下面我们将通过以下几个主题
来了解这组框架的使用过程:
1 clientvalidators扩展框架的验证流程
2 clientvalidators扩展框架的使用步骤
3 clientvalidators框架的使用说明
clientvalidators扩展框架的验证流程
JSF框架和Struts框架一个很重要的不同在于,JSF采用了以视图组件为中心的MVC设计模式,每次提交页面的时候会把视图组件的状态传递到服务器,因此其验证也就不会像
Struts那样验证JavaBean(ActionForm Bean)了,而是验证输入视图组件的状态。那么clientvalidators又是如何处理的呢?它如其名,它是采用客户端的脚本来验证的,因此它会
生成客户端的Javascript脚本。在clientvalidators使用提供的标签后,会在客户端生成如下脚本:
<script language="JavaScript" src="validatorResource.jsf?name=clientvalidators&type=js"></script>
<script language="javascript">
function validate() {
var vs = new Object();
vs.popup = true;
vs.summary = '';
var isFormValid=true;
clearValidationSummary(vs);
retVal=validateRequiredField('form1:txtName','form1:_id0',false,'dynamic');
addErrorToSummaryIfNecessary(retVal,'form1:_id0',vs);
isFormValid=isFormValid && retVal;
showPopupIfNecessary(vs);
return isFormValid;
}
</script>
通过如下脚本,我们可以看见这一validatorResource.jsf?name=clientvalidators&type=js段代码,这段代码用来返回clientvalidators提供的六种验证规则的客户端脚本
。而下面的一段脚本则是提供了用于提交时候的验证的validate()调用接口。这个调用接口主要执行了两个操作,一个是执行验证逻辑,另一个是打印验证结果。
clientvalidators扩展框架的使用步骤
我们先到http://sourceforge.net/project/showfiles.php?group_id=137466&package_id=188253&release_id=421432 这个地址下载clientvalidators扩展框架。
接下来我们了解一下如何通过clientvalidators来开发应用程序。我们知道JSF是通过标签来开发用户接口和界面逻辑的,因此clientvalidators也提供了六个标签完成应用
的。另外由于在客户端要请求脚本,所以需要web提供监听器来完成这个执行过程。那么我们的开发步骤如下:
1 在web.xml中加入:
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
2 提供资源文件
2.1 在faces-config.xml中提供资源文件,例如:
<application>
<message-bundle>ApplicationMessages</message-bundle>
<locale-config>
<default-locale>zh</default-locale>
</locale-config>
</application>
2.2 在classes中加入资源文件,其中资源键包括:
CV_REQUIRED_FIELD_VALIDATOR_ERROR = Value is required #必须输入的验证异常消息
CV_COMPARE_VALIDATOR_ERROR = Value comparison failed #比较输入的验证异常消息
CV_RANGE_VALIDATOR_ERROR = Range validation failed #指定输入范围的验证异常消息
CV_REGULAR_EXPRESSION_VALIDATOR_ERROR = Reqular expression validation failed #正则表达式的验证异常消息
CV_LENGTH_VALIDATOR_ERROR = Length validation failed #输入长度的验证异常消息
3 在jsp页面中调入标签库
<%@ taglib
uri="http://sourceforge.net/projects/jsf-comp/clientvalidators"
prefix="cv"%>
4 在jsp页面使用 标签。
下面我们来看一个例子,这个例子中我们要求用户输入一个名字,这个名字是必须输入。
<f:view>
<h:form id="form1">
<h:inputtext id="txtName" value="#{ValidatorForm.name}">
<cv:requiredfieldvalidator componenttovalidate="txtName">
display="dynamic" />
<h:commandbutton value="Save" onclick="return validate();" action="#{ValidatorForm.evt_Save}">
reRender="outmsg" />
<cv:scriptgenerator form="form1" popup="true">
</cv:scriptgenerator>
<h:outputtext id="outmsg" value="#{ValidatorForm.outmsg}">
</h:outputtext>
在这个例子中,cv作为前缀的标签,就是clientvalidators扩展框架提供的标签。<cv:requiredfieldvalidator>标签表示必须输入的验证,componentToValidate属性表示要</cv:requiredfieldvalidator></h:commandbutton></cv:requiredfieldvalidator></h:inputtext></h:form></f:view>
验证的输入组件的id,display表示要用那种形式的样式的
要验证,popup表示是否弹出验证错误消息对话框。
注:在richjsf中<a4j:commandbutton>标签也是使用客户端代码的,所以在onclick事件中要注意执行流程的控制。以下是我建议的一种验证事件写法:
<a4j:commandbutton value="Hello" onclick="if(!validate())return" action="#{ValidatorForm.evt_Save}" rerender="outmsg"></a4j:commandbutton></a4j:commandbutton>
clientvalidators框架的使用说明
<cv:requiredfieldvalidator>表示必须输入的验证
<cv:rangevalidator>表示指定范围的验证,minValue,maxValue属性分别表示最小和最大值的范围
<cv:comparevalidator>表示比较输入的验证,componentToCompare属性表示要比较的输入组件的id,operator属性表示比较操作主要有eq和not
<cv:regularexpressionvalidator>表示正则表达式的验证,pattern属性用来输入正则表达式
<cv:lengthvalidator>表示长度验证,min和max属性表示最小和最大长度的值
<cv:customvalidator>表示用户自定义验证方法,function表示用户自定义的脚本函数,params指定要验证的输入组件的客户端id,errorMessage表示输入错误的提示信息</cv:customvalidator></cv:lengthvalidator></cv:regularexpressionvalidator></cv:comparevalidator></cv:rangevalidator></cv:requiredfieldvalidator>
评论
发表评论
-
网页设计步骤
2010-04-20 15:37 909第1章 用户体验为什么如此重要 日常生活中的遭遇 什么 ... -
Unix的5种I/O模型
2009-03-30 16:00 30551、阻塞I/O 2、非阻塞I/O ... -
使用异步 I/O 大大提高应用程序的性能
2009-03-30 15:21 1170http://www.ibm.com/developerwor ... -
WSAD环境下JMS异步通信全攻略
2009-03-18 12:03 739http://tech.ccidnet.com/art/981 ... -
java线程的缺陷
2009-03-14 21:59 1179Java 编程语言的线程模型可能是此语言中最薄弱的部分。它完 ... -
Java NIO类库Selector机制解析
2009-03-02 11:45 1839Java NIO 类库 Selector ... -
Java远程通讯可选技术及原理
2009-02-23 11:07 929在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的, ... -
ConcurrentHashMap原理分析
2009-02-14 13:38 2092集 合是编程中最常用 ... -
AOP 的利器:ASM 3.0 介绍
2009-02-13 14:05 11742007 年 7 月 25 日 随着 AOP(Aspec ... -
JVM小记2
2009-01-17 16:03 927JVM执行引擎: 方法 ... -
JVM小记
2009-01-08 15:33 982JVM内存分布 方法区:包 ... -
socket, nio socket 及nio socket框架MINA总结
2008-12-21 15:03 3161最近花了点时间研究了一下nio,及其开源框架MINA,现把心得 ... -
大型网站架构分析收集
2008-11-26 22:17 2044. PlentyOfFish 网站架构学习 http://ww ... -
java深度clone
2008-11-14 14:47 1288public Object deepClone() ... -
20081107总结
2008-11-08 17:03 847今天是一个特别的 ... -
JAVA中的指针,引用及对象的clone
2008-09-04 19:22 818Java语言的一个优点就是取消了指针的概念,但也导致了许多程序 ... -
weblogic 9 远程调试
2008-07-11 17:22 1351在startWebLogic.cmd中加入 set JAVA_ ... -
JVM调优总结
2008-07-09 19:55 1143http://pengjiaheng.spaces.live. ... -
JFreeChart增强JSP报表的用户体验 (精品 )
2008-05-27 22:17 1018http://tech.it168.com/j/2007-09 ... -
Java是传值还是传引用
2008-05-27 10:09 9251. 简单类型是按值传递的 Java 方法的参数是简单类 ...
相关推荐
### JSF学习笔记 #### 1. 使用JSF ##### 1.1 入门 ###### 1.1.1 简介JSF **JavaServer Faces (JSF)** 是一个用于构建企业级Java Web应用程序的标准框架。它旨在简化Web开发过程,通过将应用程序分为不同的层次,...
在这个“良葛格_JSF学习笔记”中,我们将会深入探讨JSF的核心概念、工作原理以及实际应用。 一、JSF概述 JSF作为Sun Microsystems(现Oracle公司)开发的一套标准Java API,是MVC(Model-View-Controller)设计模式...
### 良葛格JSF学习笔记知识点概览 #### 一、JavaServer Faces (JSF) 概述 **1.1 JSF的历史与发展** - **发布日期**:JavaServer Faces (简称JSF) 作为一种Java Web应用程序的标准组件框架,于2004年3月正式发布...
下面我们将深入探讨JSF的学习要点。 首先,JSF中的UI组件是其核心特色之一。这些组件可以看作是服务器端的HTML控件,例如按钮、文本框、表单等,它们提供了声明式的方式来创建和管理Web页面的交互元素。开发者可以...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
**JSF(JavaServer Faces)** 是一种Java平台上的用户界面框架,用于构建Web应用程序。它提供了一种声明式的方式来创建用户界面...深入学习JSF,理解其核心概念和实践技巧,对于成为一名专业的Java Web开发者至关重要。
**JSF2学习笔记1——理解JavaServer Faces 2.0框架** JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该...
您是否在从事Web项目的开发? 如果是,您是否遇到过如下的问题: ... 2.多用户访问时,需要处理线程安全、数据验证、转换处理等问题。 3.展示逻辑和处理逻辑胶合在...本文是JSF入门资料的学习笔记,或许对您有一些帮助。
这个实例集合涵盖了JSF学习的所有关键内容,包括基础概念、组件使用、数据绑定、事件处理、页面导航以及与其他技术如PrimeFaces的集成。 首先,JSF的核心概念包括Facelets作为视图层的默认技术,它允许开发者使用...
综上所述,这份学习笔记是一个全面记录学习过程的宝贵资料,对于想要深入学习JSF或Web开发的人具有很高的参考价值。通过阅读和分析这些笔记,可以系统地理解和掌握JSF技术,并从中汲取有效的学习方法和问题解决策略...
JavaScriptServerFaces(JSF)是JavaEE平台中的一个用于构建用户界面的组件框架,它提供了一种声明式的方式来创建Web应用程序。在这个实例中,我们关注的是用户登录和信息查询的功能,这两个是任何Web应用中最基本且...
通过这个实例,开发者可以学习如何在JBoss上搭建一个整合了JSF和Spring的Web应用,理解两者是如何协同工作的,以及如何处理前端交互和后端服务的通信。这将有助于提升Java Web开发的能力和实践经验。
通过深入学习和实践这些内容,你将能够从零基础逐渐掌握JSF的使用,为构建高效、可维护的Java Web应用程序打下坚实的基础。记住,实践是检验理解的最好方式,所以不仅要阅读文档,还要动手编写代码,解决实际问题,...
在JavaServer Faces (JSF)框架中,分页是一种常见的需求,特别是在处理大量数据时,以提高用户体验并优化页面加载速度。...通过学习和理解这个示例,开发者可以更好地掌握JSF应用中的数据展示和用户体验优化技术。
JavaScript Server Faces(JSF)是一种Java企业级的用户界面框架,用于构建Web应用程序。它遵循Model-View-Controller...通过学习这个例子,你可以掌握JSF的核心概念,为后续使用JSF和其他Java EE技术打下坚实基础。