Facelets是用来建立JSF应用程序时的一个可供选择的表现层技术。Facelets提供了一个强有力的模板化系统,让你使用HTML样式的模板来定义JSF的表现层,减少了组件整合进表现层时候冗余的代码,而不需要一个web容器。
1. JSP并不适合JSF
因此,首先要谈一谈JSP和JSF的关系。很多同学一看到 JSF,首先想到的可能是诸如<f:view>此类的 一堆tag-lib,确实,JSF是从 JSP/Servlet 技术上发展过来的,并且,+JSF从规范制定之初就试图用JSP作为JSF的底层支撑技术,但事实证明:这是完全不同的两种编程风格,试图将这两者结合起来, 就像是把手塞进袜子一样别扭。
JSP是基于I/O流的网页开发技术,说的直白点就是:JSP所做的所有的一切,无论是“<% %>”之间的代码片断,还是 tag-lib,其最终目的就是一个:动态的拼凑 HTML或JavaScript。
而JSF则是基于组件的网页开发技术,它最终所产生的HTML也好,JavaScript也罢,甚至是如WML、SVG等其它的UI描述语言, 都是通过组件渲染得到的。JSF页面本质上就是一棵组件树,其根节点就是<f:view>。试想, Swing/SWT又何尝不是这样的呢?只不过 Swing 组件树的根节点可能是JFrame罢了。 因此,JSF就需要一种“组件树的描述技术”。在 JSF 规范制定最初,确实是希望把 JSP 的 tag-lib 作为“组件树描述技术”的,但最终发觉,这两者之间的编程思想差异太大,以致于,用JSP作为JSF的“组件树描述技术”,会给用户造成很大的误解。
2. Facelets是JSF更好的外衣
于是,Facelets出现了。这是由 Sun 公司在 dev.java.net 上的一个开源项目,其主页为:facelets.dev.java.net。为什么说 Facelets 更适合JSF?主要是基于以下特性:
· Facelets基于xml,它是组件树更自然的一种描述方式(xml天生就是一种树形结构描述语言)。
· Facelets的模版技术,使它更适合网页开发
· Facelets支持复合组件,并且,组件的定义方式更简单
· Facelets的 jsfc 技术对 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组件。
分享到:
相关推荐
3. **页面模板与组件**:Facelets 提供了一种基于 XML 的模板语言,允许你在 `template.xhtml` 中定义页面布局,然后在其他页面如 `guess.xhtml` 和 `response.xhtml` 中使用 `<ui:include>` 或 `<ui:insert>` 指令...
- 通过`<facelets:metadata>`和`<facelets:resource>`,开发者可以添加元数据或资源到页面,如CSS和JavaScript文件。 4. **条件和循环** - Facelets提供了类似编程语言的控制结构,如`<c:if>`和`<c:forEach>`,...
**Facelets:JSF、PrimeFaces、Facelets、Spring 集成与JSTL** Facelets 是一种视图层技术,它是JavaServer Faces (JSF) 框架的标准视图表示语言。JSF 是Java平台上的一个用于构建富互联网应用程序(RIA)的组件...
#### 一、Facelets:JavaServer Faces 的革新者 在探索 Facelets 的世界之前,我们首先应该明确 Facelets 在 JavaServer Faces (JSF) 生态系统中的地位与作用。Facelets,作为 JSF 的官方视图技术,它在 JSF 2.0 中...
该库旨在为 MyFaces Tomahawk 组件(核心和沙箱)提供 Facelets 支持,因此您现在可以将强大的 Tomahawk 组件与 Facelets 一起使用! 该项目是从 MyFaces wiki 和 Internet 上的其他来源收集信息而创建的。 查看 ...
在 JavaServer Faces (JSF) 2.0 中,Facelets 取代 JavaServer Pages (JSP) 成为默认的视图声明语言 (VDL)。有了 Facelets,您不需要像以前...在 Web 应用程序中使用 Facelets 的部分好处包括模板化、重用和易于开发。
Facelets是一种用于构建JavaServer ...总之,Facelets源码包为开发者提供了探索和学习Facelets的宝贵资源。通过研究源码和文档,开发者不仅可以理解Facelets的工作方式,还可以提高在JSF项目中的开发效率和代码质量。
- 要深入了解Facelets,可以参考JSF官方文档,以及各种在线教程和论坛讨论。 - MyEclipse的官方文档也提供了关于如何在IDE中使用Facelets的详细指南。 通过这个"facelets_demo"项目,开发者可以亲手实践Facelets...
《NetBeans Facelets Seam Ejb3编程入门》是一份详尽的指南,不仅涵盖了NetBeans IDE的基本配置和使用,还深入探讨了如何利用Facelets、Seam和EJB3技术开发企业级Java Web应用。对于希望使用这些技术进行开发的初学...
1. **定义组件**: 使用Facelets的XML语法(通常以`.xhtml`为扩展名)创建页面,这些页面可以包含JSF组件(如`<h:inputText>`,`<h:commandButton>`等)。组件可以有属性和事件,与后台bean进行数据交互。 2. **页面...
通常,这需要在项目的类路径中添加相应的jar,配置web.xml以启用Facelets和Ajax4jsf,然后在Facelets页面中使用Ajax4jsf的组件和行为。 6. **开发实践**:在实际开发中,开发者可以通过JSF的Managed Beans定义业务...
1. **模板语言**:Facelets使用XML语法,提供了一种声明式的方式来创建和组织用户界面组件。这种模板驱动的方法使得代码更加清晰和易于维护。 2. **直接组件绑定**:Facelets允许直接在页面上声明和引用JSF组件,...
总而言之,《Facelets Essentials》是一本专为想要深入了解和掌握Facelets框架的开发者准备的指南。通过学习本书,开发者不仅能够提高开发JSF应用的效率,还能确保应用具有更好的性能和更高的代码质量。无论你是JSF...
jsf_facelets 1.0.10版本
最后,专为 JSF 设计的视图技术! 试图把 JSF 和 JSP 结合起来就像试图要把脚硬塞进手套一样:可能做得到,但是只是更好的解决办法出现之前的一个权宜之计。在这篇文章中,JSF 的热心支持者 Rick Hightower 介绍了...
Facelets 非常适合 专为 JSF 设计的视图技术
jsf-facelets.jar 下载 希望对您有用
jsf-facelets.jar 1.1.15.B1