没有合适的资源?快使用搜索试试~ 我知道了~
JSF入门JAVAServerFaces
需积分: 0 1 下载量 133 浏览量
2013-03-18
20:12:02
上传
评论
收藏 584KB PDF 举报
温馨提示
试读
55页
JSF入门 JAVA Server Faces
资源详情
资源评论
资源推荐
JSF入门
原文:http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
繁简转换与修订:[email protected]
声明:为方便简体中文读者阅读,特将原文转换为简体,对一些习惯用语做了替换,同时对部分内容
做了修订。版权归原文作者所有,未经许可,不得用于商业目的。
2006年3月23日
1. 入门..............................................................................................................................................2
1.1 简介 JSF.............................................................................................................................2
1.2 第一个 JSF 程序................................................................................................................4
1.3 简单的导航 Navigation.....................................................................................................7
1.4 导航规则设置.....................................................................................................................9
1.5 JSF Expression Language .................................................................................................11
1.6 国际化信息.......................................................................................................................15
2. Managed Beans...........................................................................................................................17
2.1 Backing Beans...................................................................................................................18
2.2 Beans 的配置与设定........................................................................................................18
2.3 Beans 上的 List, Map .......................................................................................................21
3. 数据转换与验证........................................................................................................................23
3.1 标准转换器......................................................................................................................23
3.2 自定义转换器...................................................................................................................26
3.3 标准验证器.......................................................................................................................31
3.4 自定义验证器...................................................................................................................32
3.5 错误信息处理...................................................................................................................35
3.6 自定义转换, 验证标签...................................................................................................38
4. 事件处理....................................................................................................................................42
4.1 动作事件..........................................................................................................................42
4.2 即时事件..........................................................................................................................45
4.3 值变事件..........................................................................................................................50
4.4 Phase 事件 ........................................................................................................................53
JSF 入门
如果您是从使用的角度来看JSF,则您不用理会HTTP、数据转换等细节,JSF
将细节都隐藏起来了,无论您是网页设计人员或是应用程序设计人员,都可以使
用自己熟悉的方式来看JSF。
1. 入门
借由以下的几个主题,可以大致了解JSF的轮廓与特性,我们来看看网页设
计人员与应用程序设计人员各负责什么。
1.1 简介 JSF
Web应用程序的开发与传统的单机程序开发在本质上存在着太多的差异,Web
应用程序开发人员至今不可避免的必须处理HTTP的细节,而HTTP无状态的
(stateless)本质,与传统应用程序必须维持程序运行过程中的信息有明显的
违背,再则Web应用程序面对网站上不同的使用者同时的存取,其执行线程安全
问题以及数据验证、转换处理等问题,又是复杂且难以解决的。
另一方面,本质上是静态的HTML与本质上是动态的应用程序又是一项违背,
这造成不可避免的,处理网页设计的美术人员与程序设计人员,必须被彼此加入
至视图组件中的逻辑互相干扰,即便一些视图呈现逻辑以标签的方式呈现,试图
展现对网页设计美术人员的亲切,但它终究必须牵涉到相关的流程逻辑。
有很多方案试着解决种种的困境,而各自的着眼点各不相同,有的从程序设
计人员的角度来解决,有的从网页设计人员的角度来解决,各种的框架被提出,
所造成的是各种不统一的标签与框架,为了促进产能的集成开发环境(IDE)难
以整合这些标签与框架,另一方面,开发人员的学习负担也不断的加重,他们必
须一人了解多个角色的工作。
JavaServer Faces 的提出在试图解决这个问题,它试图在不同的角度上提
供网页设计人员、应用程序设计人员、组件开发人员解决方案,让不同技术的人
员可以彼此合作又不互相干扰,它综合了各家厂商现有的技术特点,由 Java
Community Process(JCP)团队研拟出来的一套标准,并在 2004 年三月发表了
JavaServer Faces 1.0 实现成果。
从网页设计人员的角度来看,JavaServer Faces提供了一套像是新版本的
HTML标签,但它不是静态的,而是动态的,可以与后端的动态程序结合,但网页
设计人员不需要理会后端的动态部份,网页设计人员甚至不太需要接触JSTL这类
的标签,也可以动态的展现数据(像是动态的查询表格内容),JavaServer Faces
提供标准的标签,这可以与网页编辑程序结合在一起,另一方面,JavaServer
Faces也允许您自定义标签。
从应用程序设计人员的角度来看,JavaServer Faces提供一个与传统应用程
序开发相类似的模型(当然因某些本质上的差异,模型还是稍有不同),他们可
以基于事件驱动来开发程序,不必关切HTTP的处理细节,如果必须处理一些视觉
组件的属性的话,他们也可以直接在整合开发环境上拖拉这些组件,点选设定组
件的属性,JavaServer Faces甚至还为应用程序设计人员处理了对象与字符串
(HTTP传送本质上就是字符串)间不匹配的转换问题。
第 2 页 共 55 页
JSF 入门
从UI组件开发人员的角度来看,他们可以设计通用的UI组件,让应用程序的
开发产能提高,就如同在设计Swing组件等,UI开发人员可以独立开发,只要定
义好相关的属性选项来调整细节,而不用受到网页设计人员或应用程序设计人员
的干扰。
三个角色的知识领域原则上可以互不干扰,根据您的角色,您只要了解其中
一个知识领域,就可以运用 JavaServer Faces,其它角色的知识领域您可以不
用了解太多细节。
当然,就其中一个角色单独来看,JavaServer Faces隐藏了许多细节,若要
全盘了解,其实JavaServer Faces是复杂的,每一个处理的环境都值得深入探讨,
所以学习JavaServer Faces时,您要选择的是通盘了解,还是从使用的角度来了
解,这就决定了您学习时所要花费的心力。
要使用JSF,首先您要先取得JavaServer Faces参考实现(JavaServer Faces
Reference Implementation),在将来,JSF会与Container整合在一起,届时您
只要下载支持的Container,就可以使用JSF的功能。
请至 JSF 官方网站的 下载区 下载参考实现,在下载压缩文件并解压缩之
后,将其 lib 目录下的 jar 文件复制至您的Web应用程序的/WEB-INF/lib目录
下,另外您还需要 jstl.jar 与 standard.jar 文件,这些文件您可以在 sample
目录下,解压缩当中的一个范例,在它的/WEB-INF/lib目录下找到,将之一并复
制至您的Web应用程序的/WEB-INF/lib目录下,您总共需要以下的文件:
* jsf-impl.jar
* jsf-api.jar
* commons-digester.jar
* commons-collections.jar
* commons-beanutils.jar
* jstl.jar
* standard.jar
接下来配置 Web 应用程序的 web.xml,使用 JSF 时,所有的请求都通过
FacesServlet 来处理,您可以如下定义:
• web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<description>
JSF Demo
</description>
<display-name>JSF Demo</display-name>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>
第 3 页 共 55 页
JSF 入门
javax.faces.webapp.FacesServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
在上面的定义中,我们将所有.faces 的请求交由 FaceServlet 来处理,
FaceServlet 会唤起相对的.jsp 网页,例如请求是/index.faces 的话,则实际
上会唤起/index.jsp 网页,完成以上的配置,您就可以开始使用 JSF 了。
1.2 第一个 JSF 程序
现在可以开发一个简单的程序了,我们将设计一个简单的登入程序,使用者
提交名称,之后由程序显示使用者名称及欢迎信息。
程序开发人员
先看看应用程序开发人员要作些什么事,我们编写一个简单的JavaBean:
• UserBean.java
package onlyfun.caterpillar;
public class UserBean {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
这个Bean将存贮使用者的名称,编译好之后放置在/WEB-INF/classes下。
接下来设计页面流程,我们将先显示一个登入网页/pages/index.jsp,使用
者填入名称并提交表单,之后在/pages/welcome.jsp中显示Bean中的使用者名称
第 4 页 共 55 页
JSF 入门
与欢迎信息。
为了让JSF知道我们所设计的Bean以及页面流程,我们定义一个
/WEB-INF/faces-config.xml:
• 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>
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
在<navigation-rule>中,我们定义了页面流程,当请求来自<from-view-
id>中指定的页面,并且指定了<navigation-case>中的<from-outcome>为login
时,则会将请求导向至<to-view-id>所指定的页面。
在<managed-bean>中我们可以统一管理我们的Bean,我们设定Bean对象的存
活范围是session,也就是使用者开启浏览器与程序互动过程中都存活。
接下来要告诉网页设计人员的信息是,他们可以使用的Bean名称,即
<managed-bean-name>中设定的名称,以及上面所定义的页面流程。
网页设计人员
首先网页设计人员编写index.jsp网页:
• index.jsp
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page contentType="text/html;charset=GB2312"%>
<html>
第 5 页 共 55 页
剩余54页未读,继续阅读
guoyong189
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0