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

为什么要使用Facelets:

    博客分类:
  • jsf
阅读更多

Facelets是用来建立JSF应用程序时的一个可供选择的表现层技术。Facelets提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码,而不需要一个web容器。

1. JSP并不适合JSF

因此,首先要谈一谈JSPJSF的关系。很多同学一看到 JSF,首先想到的可能是诸如<f:view>此类的 一堆tag-lib,确实,JSF是从 JSP/Servlet 技术上发展过来的,并且,+JSF从规范制定之初就试图用JSP作为JSF的底层支撑技术,但事实证明:这是完全不同的两种编程风格,试图将这两者结合起来, 就像是把手塞进袜子一样别扭。

JSP是基于I/O流的网页开发技术,说的直白点就是:JSP所做的所有的一切,无论是“<% %>”之间的代码片断,还是 tag-lib,其最终目的就是一个:动态的拼凑 HTMLJavaScript

JSF则是基于组件的网页开发技术,它最终所产生的HTML也好,JavaScript也罢,甚至是如WMLSVG等其它的UI描述语言, 都是通过组件渲染得到的。JSF页面本质上就是一棵组件树,其根节点就是<f:view>。试想, Swing/SWT又何尝不是这样的呢?只不过 Swing 组件树的根节点可能是JFrame罢了。 因此,JSF就需要一种“组件树的描述技术”。在 JSF 规范制定最初,确实是希望把 JSP tag-lib 作为“组件树描述技术”的,但最终发觉,这两者之间的编程思想差异太大,以致于,用JSP作为JSF的“组件树描述技术”,会给用户造成很大的误解

2. FaceletsJSF更好的外衣

于是,Facelets出现了。这是由 Sun 公司在 dev.java.net 上的一个开源项目,其主页为:facelets.dev.java.net。为什么说 Facelets 更适合JSF?主要是基于以下特性:

·         Facelets基于xml,它是组件树更自然的一种描述方式(xml天生就是一种树形结构描述语言)。

·         Facelets模版技术,使它更适合网页开发

·         Facelets支持复合组件,并且,组件的定义方式更简单

·         Faceletsjsfc 技术对 html 设计器更友好

JSP相比,Facelets无需运行前编译,并且,Facelets 还适合对生成的组件树做cache,从而使运行期更轻量,效率更高
如何在JSF应用中使用Facelets

配置

1.导入jsf-facelets.jar

2.修改faces-config.xml文件:

<faces-config>  
<application>
     <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>  </application>
</faces-config>
3.JavaServer Faces默认使用JSP文件定义视图(*.jsp)。需要web.xml中修改该类型。
<context-param>  <param-name>javax.faces.DEFAULT_SUFFIX</param-name>  <param-value>.xhtml</param-value></context-param>

类库

1.Facelets使用JavaServer Faces API 中所有UIComponents的方法,这就意味着我们可以使用JSF的tag类库文档

2.还可以使用JSTL的核心库

3.另外,Facelets内建了一个UI标签库提供了模板化和重用性。https://facelets.dev.java.net/nonav/docs/dev/docbook.html#template-insert

别名组件(jsfc

当你使用Facelets中内建的JSF组件,有一个标签库文档是一件很好的事。

创建一个简单的表单,如果使用标签库文档:

<h:form>    
         <h:inputText value="#{person.name}"/>   
         <h:commandButton action="#{person.action}"/>
</h:form>

它使用了特殊的标签,而使得他们在一个HTML编辑器工具(比如Dreamweaver)中不是特别好看。Facelets提供了一种不同的方法,使用jsfc属性来指定组件。

Facelets编译器寻找文档中所有组件的jsfc属性。jsfc属性的值是页面设计者用来在该页面中取代此元素值的别名。

<input type="text" jsfc="h:inputText" value="#{foo.bar}"/>

jsfc(JSF Compilation)告诉了编译器在view中添加一个h:inputText组件。Facelets在编译的时候将会生成一个h:inputText组件,同时将会自动配置所有合适的属性。

别名组件允许设计工具看到正常的HTML input标签,而编程人员可以将之看成是一个在jsfc属性中定义的JSF组件。


分享到:
评论
1 楼 yourenyouyu2008 2009-07-20  
讲的很好,引用下。

相关推荐

    Facelets

    3. **页面模板与组件**:Facelets 提供了一种基于 XML 的模板语言,允许你在 `template.xhtml` 中定义页面布局,然后在其他页面如 `guess.xhtml` 和 `response.xhtml` 中使用 `&lt;ui:include&gt;` 或 `&lt;ui:insert&gt;` 指令...

    facelets中文教程(初级+高级)

    - 通过`&lt;facelets:metadata&gt;`和`&lt;facelets:resource&gt;`,开发者可以添加元数据或资源到页面,如CSS和JavaScript文件。 4. **条件和循环** - Facelets提供了类似编程语言的控制结构,如`&lt;c:if&gt;`和`&lt;c:forEach&gt;`,...

    Facelets:jsf、primefaces、facelets、spring 集成、jstl、

    **Facelets:JSF、PrimeFaces、Facelets、Spring 集成与JSTL** Facelets 是一种视图层技术,它是JavaServer Faces (JSF) 框架的标准视图表示语言。JSF 是Java平台上的一个用于构建富互联网应用程序(RIA)的组件...

    facelets 教程

    #### 一、Facelets:JavaServer Faces 的革新者 在探索 Facelets 的世界之前,我们首先应该明确 Facelets 在 JavaServer Faces (JSF) 生态系统中的地位与作用。Facelets,作为 JSF 的官方视图技术,它在 JSF 2.0 中...

    tomahawk-facelets:Facelets 支持 Apache MyFaces Tomahawk

    该库旨在为 MyFaces Tomahawk 组件(核心和沙箱)提供 Facelets 支持,因此您现在可以将强大的 Tomahawk 组件与 Facelets 一起使用! 该项目是从 MyFaces wiki 和 Internet 上的其他来源收集信息而创建的。 查看 ...

    facelets模板

    在 JavaServer Faces (JSF) 2.0 中,Facelets 取代 JavaServer Pages (JSP) 成为默认的视图声明语言 (VDL)。有了 Facelets,您不需要像以前...在 Web 应用程序中使用 Facelets 的部分好处包括模板化、重用和易于开发。

    facelets源码包

    Facelets是一种用于构建JavaServer ...总之,Facelets源码包为开发者提供了探索和学习Facelets的宝贵资源。通过研究源码和文档,开发者不仅可以理解Facelets的工作方式,还可以提高在JSF项目中的开发效率和代码质量。

    facelets_demo

    - 要深入了解Facelets,可以参考JSF官方文档,以及各种在线教程和论坛讨论。 - MyEclipse的官方文档也提供了关于如何在IDE中使用Facelets的详细指南。 通过这个"facelets_demo"项目,开发者可以亲手实践Facelets...

    netbeans_Facelets_Seam_Ejb3编程入门

    《NetBeans Facelets Seam Ejb3编程入门》是一份详尽的指南,不仅涵盖了NetBeans IDE的基本配置和使用,还深入探讨了如何利用Facelets、Seam和EJB3技术开发企业级Java Web应用。对于希望使用这些技术进行开发的初学...

    JSF与Facelets应用程序

    1. **定义组件**: 使用Facelets的XML语法(通常以`.xhtml`为扩展名)创建页面,这些页面可以包含JSF组件(如`&lt;h:inputText&gt;`,`&lt;h:commandButton&gt;`等)。组件可以有属性和事件,与后台bean进行数据交互。 2. **页面...

    jsf+facelets+ajax4jsf的全部jar包

    通常,这需要在项目的类路径中添加相应的jar,配置web.xml以启用Facelets和Ajax4jsf,然后在Facelets页面中使用Ajax4jsf的组件和行为。 6. **开发实践**:在实际开发中,开发者可以通过JSF的Managed Beans定义业务...

    jsf-facelets1.1.9

    1. **模板语言**:Facelets使用XML语法,提供了一种声明式的方式来创建和组织用户界面组件。这种模板驱动的方法使得代码更加清晰和易于维护。 2. **直接组件绑定**:Facelets允许直接在页面上声明和引用JSF组件,...

    Facelets Essentials - APRESS

    总而言之,《Facelets Essentials》是一本专为想要深入了解和掌握Facelets框架的开发者准备的指南。通过学习本书,开发者不仅能够提高开发JSF应用的效率,还能确保应用具有更好的性能和更高的代码质量。无论你是JSF...

    jsf_facelets,jar

    jsf_facelets 1.0.10版本

    facelets技术文档

    最后,专为 JSF 设计的视图技术! 试图把 JSF 和 JSP 结合起来就像试图要把脚硬塞进手套一样:可能做得到,但是只是更好的解决办法出现之前的一个权宜之计。在这篇文章中,JSF 的热心支持者 Rick Hightower 介绍了...

    jsf-facelets-1.1.9

    Facelets 非常适合 专为 JSF 设计的视图技术

    jsf-facelets.jar 下载

    jsf-facelets.jar 下载 希望对您有用

    jsf-facelets.jar 1.1.15.B1

    jsf-facelets.jar 1.1.15.B1

Global site tag (gtag.js) - Google Analytics