这是两篇详细介绍facelets功能的文章
http://www.ibm.com/developerworks/cn/java/j-facelets/
http://www.ibm.com/developerworks/cn/java/j-facelets2.html
jsf是种页面组件技术,它将一个页面组装成一个以rootview为根的组件树,当我们访问一个页面时jsf框架会去生成或恢复该页面的组件树。组件树如何创建却不是jsf框架的职责,jsf默认实现使用jsp来创建组件,可以通过jsf的配置文件来使用其他的技术,比如Facelets.
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
Facelets特性
Facelets 有以下吸引人的特性:
模板化(像 Tiles)
复合组件
定制的逻辑标记
表达式语言
对设计师友好的页面开发
创建组件库
其中的 “复合组件” 和“创建组件库”让我们定义自己的组件简便了很多,并且组件的重用性得到了很大的提升。
详细的讲解上面两篇文章中说的很详细,这里只给些补从。
1)例子文件中用到的$和#表达式功能相同,可以相互替换 ,不知道是不是在任意页面$和#都是等价的。
2)facelets可以将多种东西当做组件来使用,比如一个xhtml文件、component、 validator等
下面的文件描述了它支持的组件类型
facelet_taglib_1_0.dtd 的文件
<!ELEMENT facelet-taglib (library-class|(namespace,(tag|function)+))>
<!ATTLIST facelet-taglib xmlns CDATA #FIXED "http://java.sun.com/JSF/Facelet">
<!ELEMENT namespace (#PCDATA)>
<!ELEMENT library-class (#PCDATA)>
<!ELEMENT tag (tag-name,(handler-class|component|converter|validator|source))>
<!ELEMENT tag-name (#PCDATA)>
<!ELEMENT handler-class (#PCDATA)>
<!ELEMENT component (component-type,renderer-type?,handler-class?)>
<!ELEMENT component-type (#PCDATA)>
<!ELEMENT renderer-type (#PCDATA)>
<!ELEMENT converter (converter-id, handler-class?)>
<!ELEMENT converter-id (#PCDATA)>
<!ELEMENT validator (validator-id, handler-class?)>
<!ELEMENT validator-id (#PCDATA)>
<!ELEMENT source (#PCDATA)>
<!ELEMENT function (function-name,function-class,function-signature)>
<!ELEMENT function-name (#PCDATA)>
<!ELEMENT function-class (#PCDATA)>
<!ELEMENT function-signature (#PCDATA)>
下面是我们自定义的组件
<tag>
<tag-name>validateDoubleRange</tag-name>
<source>validator_DoubleRange.xhtml</source>
</tag>
<tag>
<tag-name>validateCompare</tag-name>
<validator>
<validator-id>trackway.validator.compare</validator-id>
</validator>
</tag>
<tag>
<tag-name>addValidatorMessage</tag-name>
<handler-class>
trackway.twid09.common.tag.AddValidatorMessageHandler
</handler-class>
</tag>
<tag>
<tag-name>rating</tag-name>
<component>
<component-type>javax.faces.SelectOne</component-type>
<renderer-type>javax.faces.Rating</renderer-type>
</component>
</tag>
<tag>
<tag-name>requiredFieldValidator</tag-name>
<component>
<component-type>net.sf.jsfcomp.clientvalidators.requiredfieldvalidator</component-type>
</component>
</tag>
为什么要这样做呢? 原因是我们不能直接在xhtml文件中使用jsp tag,比如我们自定义了一个验证组件regularExpressionValidator,按照jsf的验证规范,验证组件是很容易写的,如果我们使用jsp的话,我们还要做的一项工作就是再实现个jsp tag,可我们使用了facelets时却不能直接使用jsp的tag,这时就需要我们定义在facelets中使用的tag,相比较来说使用facelets比使用jsp的开发工作要小的多。
<tag>
<tag-name>validateRegularrxpression</tag-name>
<validator>
<validator-id>trackway.validator.regularrxpression</validator-id>
</validator>
</tag>
还有个例子就是我们使用了一个jsf的客户端验证组件clientvalidators-0.9.1.jar,但它却不能直接在xhtml中使用,
通过如下的定义就可以很容易的将clientvalidators集成到facelets中
<tag>
<tag-name>requiredFieldValidator</tag-name>
<component>
<component-type>net.sf.jsfcomp.clientvalidators.requiredfieldvalidator</component-type>
</component>
</tag>
<tag>
<tag-name>rangeValidator</tag-name>
<component>
<component-type>net.sf.jsfcomp.clientvalidators.rangevalidator</component-type>
</component>
</tag>
分享到:
相关推荐
1. **Facelets 概述** - Facelets 是JSF的默认视图层技术,替代了之前的JSP。 - 它基于XML,支持模板和重用,使得UI设计更加灵活和模块化。 - Facelets 使用`.xhtml`文件扩展名,可以嵌入JavaServer Faces组件和...
Java JazzUp 内容概述 - **简化复杂技术**:文档中提到,本期 JavaJazzUp 特别关注如何将复杂的 Java 技术(如 JBoss AS、Hibernate 3.0、Ant 工具、Struts 2、JSF 和设计模式)进行简化,使之更容易被新手程序员...
2. Facelets:JSF的视图表示技术,用XML定义组件和布局。 3. JSF组件模型:通过UIComponent和FacesComponent实现组件化开发。 4. Managed Beans:作为业务逻辑层的载体,与JSF页面交互。 综上所述,JSP入门教程涵盖...
**JSF(JavaServer Faces)概述** JSF是Java平台上的一个官方标准,全称为JavaServer Faces,由Sun Microsystems(现已被Oracle收购)开发并维护。它是一个用于构建用户界面的MVC(Model-View-Controller)框架,...
一、JSF框架概述 JSF作为Java EE的一部分,提供了MVC(Model-View-Controller)架构,帮助开发者构建可维护、可扩展的Web应用程序。JSF的核心组件包括Facelets、Managed Beans、UI Components、Event处理和...
**JSF(JavaServer Faces)概述** JSF(JavaServer Faces)是Java平台上的一个用于构建用户界面的组件模型框架,由Java Community Process (JCP)制定并维护。它为开发人员提供了一种构建Web应用程序的高效方法,...
#### RichFaces概述 RichFaces是由JBoss社区开发并维护的一个开源项目,它提供了一系列高级UI组件,这些组件不仅具备丰富的视觉效果,还能轻松实现复杂的客户端操作,如拖放、树形菜单、模态对话框等。RichFaces...
#### 二、JSF Web Apache MyFaces概述 - **Apache MyFaces 1.2**:本版本是Apache MyFaces的一个重要版本,提供了对JSF 1.2规范的支持。它包括了许多新特性,如增强的Ajax支持、更好的国际化支持以及更灵活的配置...
**JSF框架概述**: JSF是一个MVC(Model-View-Controller)框架,它简化了开发Java Web应用程序的过程。它通过提供预定义的UI组件、事件处理机制和生命周期管理来实现这一点。JSF的核心组件包括Facelets,它是用于...
使用Facelets视图声明语言、托管bean和JSF表达式语言(EL)。按照JSF导航模型声明一个页面,包括新的“隐式导航”功能。使用用户界面组件模型和JSF事件模型,包括支持可添加书签的页面以及POST、REDIRECT、GET模式。...
1. JSF架构概述 JSF的核心组件包括UI组件、事件处理、数据绑定、生命周期管理等。UI组件是用户界面的基础,如按钮、输入框等,它们通过XML格式的Facelets进行定义和配置。事件处理允许用户交互时触发特定的动作,而...
使用Facelets视图声明语言、托管bean和JSF表达式语言(EL)。按照JSF导航模型声明一个页面,包括新的“隐式导航”功能。使用用户界面组件模型和JSF事件模型,包括支持可添加书签的页面以及POST、REDIRECT、GET模式。...
JSF概述 JSF的核心思想是组件模型,它将UI元素视为可复用的组件,开发者可以通过声明式的方式配置这些组件,并将它们与后台业务逻辑关联。JSF框架负责处理用户请求,更新组件状态,以及生成响应到客户端。 ### 2....
#### 一、概述 JavaServer Faces(简称JSF)是Java平台企业版(Java EE)中用于构建Web用户界面的标准技术。它提供了一个强大的框架来开发服务器端应用,支持开发者清晰地将视觉呈现与业务逻辑分离。JSF 2.0是一次...
1. **JSF概述**: JSF是由Sun Microsystems(现Oracle公司)开发的开源框架,主要用于简化Java Web应用的开发。它提供了一种声明式编程模型,使得开发者可以更加关注业务逻辑,而不是底层的HTML渲染和用户交互处理...
1. **JSF架构概述** JSF由多个组件构成,包括视图层、模型层、控制层和服务层。源代码中包含的组件如Facelets、UIComponent、Managed Beans等,都是实现这些层的关键部分。Facelets作为默认的视图描述语言,简化了...
### JSF 2.0概述 JSF 2.0 是在JSF 1.x基础上的一次重大升级,它引入了诸如Facelets作为默认视图描述语言、组件库增强、依赖注入和异步请求处理等关键特性。这些改进使得JSF更加现代化,与Java EE 6标准相融合,提高...
**一、JSF概述** JSF的核心理念是将用户界面分解为可重用的组件,这些组件可以像积木一样组合起来构建复杂的页面。每个组件都有自己的生命周期和状态管理,这大大简化了Web开发过程。JSF 1.1 在设计时强调了MVC...
JSF概述 JSF是Java Community Process(JCP)制定的标准,其设计目标是简化Java Web应用的开发。它通过提供一系列可重用的UI组件和声明式绑定,让开发者能够以更直观的方式构建Web应用。JSF的核心概念包括组件、...