`
lxcaoxin
  • 浏览: 127896 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

Facelets介绍,第一部分

 
阅读更多
原文:http://www.jsfcentral.com/articles/facelets_1.html
    这是关于Facelets文章系列的第一部分,Facelets是用来建立JSF应用程序时的一个可供选择的表现层技术。Facelets提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码,而不需要一个web容器。在这篇文中,Jacob将会介绍Facelets,解释一些Facelets的特性,还有他创建这个project的缘由。这个系列文章的第二部分将会指导你如何使用Facelets。

自从JavaServer Faces成为工业标准以后,web社区一直热切地寻找一个类似Tapestry的框架。当JavaServer Faces 和JSP开始对齐,Facelets迈向了JSP specification地外部并且它提供了一个高性能以JSF为中心的表现层技术。任何写了一个JSP页面的人将可以用Facelets和类似的XML标签库来做同样的事。不同点在于任何隐藏在JSP供应商API下面的负荷被移除了,进而增强了JSF使之更像一个平台,并且提供了简单的插入式开发而不用进行任何的JSP标签库的开发工作。

JavaServer Faces的UIComponents是Facelets中最基本的类;没有必要去开发额外的对象去整合。也没有任何必要去学习另外一个XML schema来定义你的表现层。

这里是一个示例告诉了你在Facelets中定义一个页面是如何容易:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jstl/core">
<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Hello</title> </head>
<body>
<form id="helloForm" jsfc="h:form">
<h2> Hi. My name is Duke. I'm thinking of a number from #{UserNumberBean.minimum} to #{UserNumberBean.maximum}. Can you guess it? </h2>
<img id="waveImage" src="wave.med.gif" />
<input type="text" jsfc="h:inputText" id="userNo" value="#{UserNumberBean.userNumber}" validator="#{UserNumberBean.validate}"/>
<input type="submit" jsfc="h:commandButton" id="submit" action="success" value="Submit" /> <p /> <h:message showSummary="true" id="errors1" for="userNo"/> <p /> <c:forEach begin="1" end="4" varStatus="v"> #{view.viewId} #{v.index}<br/> </c:forEach> </form>
</body>
</html>
你可能会感觉到这些标签看起来特别熟悉。这就是要点。使用Facelets将不需要学习额外的模板语言或schema。

为什么使用Facelets?

最先和最重要的,Facelets不依赖于一个JSP容器。 这就意味着你可以使用新的JSF1.2的特性而不需要等待JSP2.1容器。当JSF1.1出来的时候,结合使用JSF 1.1和JSP有一些严重的问题。大部分问题都在Hans Bergsten的"Improving JSF by Dumping JSP."文章中提到了。强烈建议阅读这篇文章在你推进倒JSF1.2和Facelets之前。
Secondly, Facelets is designer friendly. Taking from Tapestry's jwcid attribute, Facelets uses jsfc and proper namespaces to convert HTML elements to their associated JSF component. In the example above, jsfc (JSF Compilation) is used to tell the compiler to instead build a h:inputText component into the view.

第二,Facelets是设计者友好的。取自Tapestry的jwcid属性,Facelets使用jsfc和合适的命名空间将HTML元素转换倒他们对应的JSF组件。在上面的例子中,jsfc(JSF Compilation)告诉了编译器在view中添加一个h:inputText组件。

最后要提出的就是,Facelets是非常轻量级的。你们中的一些人可能很熟悉Velocity的作为模板引擎的性能。Facelet也拥有相同的性能,你可以定义测试你的JSF表现层而不需要一个Servlet容器。Facelets的消耗很少且有在实际的成品中使用的经验。它也为servlet以外的JSF应用开发打开了一道门,包括Portlets。

这里就是你如何创建一个Facelet:

// grab our FaceletFactory and create a Facelet FaceletFactory factory = FaceletFactory.getInstance(); Facelet f = factory.getFacelet(viewToRender.getViewId()); // populate UIViewRoot f.apply(context, viewToRender);
Facelets的一些特性
可以和JSF 1.1或1.2工作,包括 Sun's RI和Apache MyFaces.
0时间的UIComponents 标签开发
对JSF组件和页面的快速模板化/装饰支持
可以在不同的文件中声明UIComponent树(UICompositions)
支持到行/标签/属性的精确的错误报告
可以在不同的文件中声明标签, 甚至可以包含在Jar包中
全面的 EL 支持, 包含 Functions
编译期间的 EL 验证
XML 配置文件不是必要的, 但是是可用的
使用了 'jsfc' 属性, 和Tapestry的jwcid起相同作用 (例如: <input id="bar" type="text" jsfc="h:inputText" value="#{foo.bar}"/>)
插入式的装饰设计使设计者的工作更加简单 (例: 在编译期转换<input type="text"/>到<h:inputText/>)
不需要任何额外的呈现工具
Facelets不依赖于web容器
Jacob Hookom is a developer with Sun's JavaServer Faces RI and Glassfish projects and is an active member of the JavaServer Faces Expert Group. He started consulting at 16 and has since held titles from Information Architect to Product Manager. More recently, Jacob started the 'Facelets' project as an ideal foundation for JavaServer Faces development. He has an accredited BS in Comprehensive Computer Science from the University of Wisconsin, Eau Claire.
为什么Facelets会成功
任何人都希望更加设计者友好,而Tapestry看起来仿佛是开发者追求的唯一选择。另外一方面,JSF是一个任何人都希望使用的标准,但是JSF需要一个更加“可插入性”的ViewHandler框架来使开发者和设计者觉得友好。

开发者们做了足够的工作,在faces-config.xml中定义UIComponents/Converters/Validators,Facelets仅仅需要他们提供一个别名来将他们定义的对象插入到页面中去(不需要任何XML)。重点是简单的整合性和开发性。

最后,Facelets是整洁的面向JSF方面纠正。模板化,重用,易开发性拥有最高优先权,用来帮助开发者使用JSF平台开发大项目。
分享到:
评论

相关推荐

    netbeans_Facelets_Seam_Ejb3编程入门

    - **EJB3**:即Enterprise JavaBeans的第三版,是Java平台企业版(Java EE)的一部分,用于构建可移植的企业级应用组件。EJB3简化了EJB模型,引入了轻量级POJO(Plain Old Java Object)风格的组件,使得开发更加...

    jsf 1.2 myfaces1.2.7 richfaces3.3.1 facelets1.2 所有的最新包

    **JSF 1.2** 是JavaServer Faces的第二个主要版本,它是一个Java平台上的用户界面框架,专门用于构建Web应用程序。JSF的核心是组件模型,允许开发者通过使用可重用的UI组件来构建页面。JSF 1.2带来了许多增强的功能...

    《jsf第一步》源码ch1-12

    《JSF第一步》是一本引导初学者入门JavaServer Faces(JSF)技术的书籍,源码包中的"ch1-12"包含了从第1章到第12章的示例代码,帮助读者通过实践来深入理解JSF的核心概念和应用。JSF是一种Java平台上的Web应用程序...

    JSF框架入门教程和JSF的jar包

    3. **编写第一个JSF页面**: 使用Facelets创建一个简单的Hello, World页面,了解组件的使用。 4. **Managed Bean的创建和使用**: 编写Managed Bean,处理页面请求和数据。 5. **调试和测试**: 运行应用,通过浏览器...

    第一个JSF程序

    在"第一个JSF程序"中,我们将探索如何使用JSF来创建一个基本的Web应用。 首先,JSF应用通常由以下几个部分组成: 1. **Facelets**:这是JSF的视图技术,用于定义用户界面。Facelets使用XML语法,并允许开发者使用...

    《jsf第一步》源码ch14-21

    《JSF第一步》是一本关于JavaServer Faces (JSF)技术的入门教程,源码ch14-21涵盖了从第14章到第21章的实践代码。JSF是Java平台上用于构建Web应用程序的官方标准框架,它提供了一种组件化的方式来处理用户界面和后端...

    jsf第一步

    在《jsf第一步》这本书的第13章中,我们很可能会探讨JSF的更高级主题,例如自定义组件、数据验证、国际化和本地化,以及可能的性能优化策略。 首先,让我们深入了解一下JSF的核心概念: 1. **组件模型**:JSF的...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    这是2个压缩包中的第二个,请一并将第一个下载后,随便解压其中一个即可。 如果只希望下载其中一部分即可阅读,可下载另一个pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 内容简介 出版日期: ...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    这是2个压缩包中的第一个,请与第二个一并下载,然后随便解压其中一个即可。如果只想下载其中一部分,可下载pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 这个pdf是665页中的前404页,后面200多页...

    sun jsf第一个程序

    在这个"sun jsf第一个程序"中,我们可能看到以下关键组成部分: 1. **Facelets模板**:JSF推荐使用Facelets作为视图层的技术,它允许我们创建可重用的UI组件。登录页面可能包含用户名和密码输入字段,以及提交按钮...

    JSF入门(一)

    在本系列的第一部分,我们将对JSF的基础知识进行简要介绍,帮助初学者快速入门。 **1. JSF架构** JSF架构由多个组件组成,包括视图、控制器和模型。视图由JSF UI组件构成,控制器负责处理用户交互,而模型则与业务...

    《JSF入门》简体中文版.rar

    作为Java EE的一部分,它为开发者提供了一种结构化、组件化的开发方式,简化了创建用户界面和处理用户输入的过程。《JSF入门》简体中文版是一部针对初学者的教程,旨在帮助读者快速理解和掌握JSF的基础知识。 本...

    jsf经典入门

    1. **组件库**:如PrimeFaces、MyFaces和RichFaces等第三方组件库提供了大量现成的组件,可以快速构建功能丰富的用户界面。 2. **依赖注入**:JSF可以与CDI(Contexts and Dependency Injection)结合,实现更灵活...

    jsf-1-1:第一个jsf

    Facelets是JSF 1.1中推荐的视图表示技术,它是一种XML方言,允许开发者声明和组合UI组件。JSP也可以用于视图表示,但Facelets提供了更好的结构和重用性。例如,`&lt;h:form&gt;`标签用于创建一个表单,`&lt;h:inputText&gt;`定义...

    轻量级java ee企业应用实战(第三版)电子书part1

    这本书的第一部分为我们揭示了Java EE开发的核心概念和实践技巧,是理解轻量级Java EE应用的基础。 Java EE(Enterprise Edition),又称为Java平台企业版,是Java技术在大型企业级应用中的标准框架。它提供了丰富...

    推荐经典《JSF入门》简体中文版教程

    JSF提供了Ajax支持,通过RichFaces、PrimeFaces等第三方库,可以实现部分页面的异步更新,提高用户体验。Ajax在JSF中的实现通常基于JSF的Partial State Saving机制。 八、集成其他Java EE技术 JSF可以与其他Java EE...

    JSF编程,共享一本书(二)

    2. **创建第一个JSF页面** - 使用Facelets创建基本的JSF界面,介绍UI组件的使用。 3. **Managed Beans的创建和管理** - 如何定义Managed Bean,如何使用@ManagedBean和@SessionScoped等注解进行管理。 4. **数据...

    《JSF入门》简体中文版

    3. **Hello, World程序**: 创建第一个JSF应用程序,了解基本的页面结构和组件使用。 4. **组件和事件处理**: 学习如何创建自定义组件,理解事件模型和监听器的工作原理。 5. **Managed Beans和数据绑定**: 学习如何...

    Apress.Beginning.Java.EE.7.2013

    第1章概述了Java EE 7的新特性,第2章介绍了上下文依赖注入(CDI),它是Java EE的一个核心特性,用于管理应用组件的依赖关系,简化组件之间的交互。第3章讲解了Java Bean验证API,这是一种基于注解的验证框架,允许...

Global site tag (gtag.js) - Google Analytics