`
julyboxer
  • 浏览: 219036 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSF学习记录

    博客分类:
  • java
阅读更多
资料来源 http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
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>
  • function customFunctionName(param1) {
  • var value = document.all[param1].value;
  • if(value == 'someValueToBeTested')
  • return true;
  • else
  • return false;
  • }
  • Validation Summary 如果在页面上添加该标签,则显示该页面的所有验证的摘要信息
    属性:
    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&amp;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表示要用那种形式的样式的

    输出,只要有两种static和dynamic。<cv:scriptgenerator> 标签用来生客户段验证脚本,form属性表示那个form</cv:scriptgenerator>

    要验证,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>

    分享到:
    评论
    1 楼 julyboxer 2007-09-14  
    http://caiwforzx.spaces.live.com/default.aspx?_c01_BlogPart=blogmgmt&_c=BlogPart&_c02_owner=1&prevPost=true&postPH=cns!769D6A983C2D1911!128

    相关推荐

      JSF学习笔记

      ### JSF学习笔记 #### 1. 使用JSF ##### 1.1 入门 ###### 1.1.1 简介JSF **JavaServer Faces (JSF)** 是一个用于构建企业级Java Web应用程序的标准框架。它旨在简化Web开发过程,通过将应用程序分为不同的层次,...

      良葛格_JSF学习笔记.rar

      在这个“良葛格_JSF学习笔记”中,我们将会深入探讨JSF的核心概念、工作原理以及实际应用。 一、JSF概述 JSF作为Sun Microsystems(现Oracle公司)开发的一套标准Java API,是MVC(Model-View-Controller)设计模式...

      良葛格JSF学习笔记.pdf

      ### 良葛格JSF学习笔记知识点概览 #### 一、JavaServer Faces (JSF) 概述 **1.1 JSF的历史与发展** - **发布日期**:JavaServer Faces (简称JSF) 作为一种Java Web应用程序的标准组件框架,于2004年3月正式发布...

      JSF学习笔记 jsF

      下面我们将深入探讨JSF的学习要点。 首先,JSF中的UI组件是其核心特色之一。这些组件可以看作是服务器端的HTML控件,例如按钮、文本框、表单等,它们提供了声明式的方式来创建和管理Web页面的交互元素。开发者可以...

      JSF2整合Spring3------JSF学习笔记4

      **JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...

      JSF学习笔记,JSF实战

      **JSF(JavaServer Faces)** 是一种Java平台上的用户界面框架,用于构建Web应用程序。它提供了一种声明式的方式来创建用户界面...深入学习JSF,理解其核心概念和实践技巧,对于成为一名专业的Java Web开发者至关重要。

      一个简单的jsf例子------JSF2学习笔记1

      **JSF2学习笔记1——理解JavaServer Faces 2.0框架** JavaServer Faces (JSF) 是一种基于组件的Web应用程序开发框架,由Sun Microsystems(现为Oracle Corporation的一部分)开发,旨在简化用户界面构建。JSF2是该...

      JSF入门级资料 学习笔记

      您是否在从事Web项目的开发? 如果是,您是否遇到过如下的问题: ... 2.多用户访问时,需要处理线程安全、数据验证、转换处理等问题。 3.展示逻辑和处理逻辑胶合在...本文是JSF入门资料的学习笔记,或许对您有一些帮助。

      JSF实例,涵盖了所有JSF学习内容

      这个实例集合涵盖了JSF学习的所有关键内容,包括基础概念、组件使用、数据绑定、事件处理、页面导航以及与其他技术如PrimeFaces的集成。 首先,JSF的核心概念包括Facelets作为视图层的默认技术,它允许开发者使用...

      学习笔记学习笔记笔记

      综上所述,这份学习笔记是一个全面记录学习过程的宝贵资料,对于想要深入学习JSF或Web开发的人具有很高的参考价值。通过阅读和分析这些笔记,可以系统地理解和掌握JSF技术,并从中汲取有效的学习方法和问题解决策略...

      JSF的一个实例

      JavaScriptServerFaces(JSF)是JavaEE平台中的一个用于构建用户界面的组件框架,它提供了一种声明式的方式来创建Web应用程序。在这个实例中,我们关注的是用户登录和信息查询的功能,这两个是任何Web应用中最基本且...

      jsf+spring 实例

      通过这个实例,开发者可以学习如何在JBoss上搭建一个整合了JSF和Spring的Web应用,理解两者是如何协同工作的,以及如何处理前端交互和后端服务的通信。这将有助于提升Java Web开发的能力和实践经验。

      从零开始,跟我学JSF,起步 JSF

      通过深入学习和实践这些内容,你将能够从零基础逐渐掌握JSF的使用,为构建高效、可维护的Java Web应用程序打下坚实的基础。记住,实践是检验理解的最好方式,所以不仅要阅读文档,还要动手编写代码,解决实际问题,...

      JSF经典的js分页

      在JavaServer Faces (JSF)框架中,分页是一种常见的需求,特别是在处理大量数据时,以提高用户体验并优化页面加载速度。...通过学习和理解这个示例,开发者可以更好地掌握JSF应用中的数据展示和用户体验优化技术。

      JSF实现的CRUD例子 myeclipse

      JavaScript Server Faces(JSF)是一种Java企业级的用户界面框架,用于构建Web应用程序。它遵循Model-View-Controller...通过学习这个例子,你可以掌握JSF的核心概念,为后续使用JSF和其他Java EE技术打下坚实基础。

    Global site tag (gtag.js) - Google Analytics