Facelets专为JSF设计的视图技术

开发 后端
本文介绍Facelets专为JSF设计的视图技术,以及Facelets 概述,Facelets 模板框架等。

由于最近在 Java™ 服务器外观(JSF)项目上工作,我很有幸***次使用了 Facelets。关于 Facelets,我最喜欢的是它让我可以创建可重用的复合组件。能够拿出一个页面(例如 JSP)并把它变成组件,对于我的 JSF 开发来说真是莫大的好处。我的结论是什么?如果不用 Facelets,那么就无法得到能从 JSF 获得的***收获。

JSF 和 Java 服务器页面技术之间的不匹配,是 JSF 开发中的一个严重问题。问题是如何把 JSP 的动态内容集成到 JSF 基于组件的模型中。JSP 非常重视生成动态内容输出,而 JSF 需要 JSP 来协调组件模型的构建。因为这个任务超出了 JSP 原来的目的,所以产生了距离。

大多数 JSF 开发人员只是学会了一事一议地解决这类问题,但是这就像在锤子上放一个枕头,最终还会掉下来打伤脑袋。Facelets 是更加全面的解决方案:专为 JSF 组件模型度身定制的模板化语言。

Facelets 有以下吸引人的特性:
◆模板化(像 Tiles)
◆复合组件
◆定制的逻辑标记
◆表达式语言
◆对设计师友好的页面开发
◆创建组件库

这些特性比我想像的要更相关和统一。在这篇文章中,我讨论前两个:模板化和复合组件。我使用的 Web 应用程序基于为我的针对怀疑者的 JSF 系列开发的一个应用程序,我把它更新成使用 Facelets 视图而不是 Tiles。在进一步阅读之前,应当 下载示例代码。如果要随着讨论一起操作,还需要 安装 Facelets。

Facelets 概述

对于 Facelets 可能会做的***一个错误假设,就是它只是 Tiles 的替代品。Facelets 远不止如此:它是思考 JSF 的新方式。
 
JSP 是种生成 servlet 的模板化语言。JSP 的主体与 servlet 的 doGet() 和 doPost() 方法等价(也就是说,成为 jspService() 方法)。JSF 定制标记(例如 f:view 和 h:form)只是调用 JSF 组件来呈现它们自己的当前状态。JSF 组件模型的生命周期独立于 JSP 生成的 servlet 的生命周期。这种独立性就是混淆的来源。

与 JSP 不同,Facelets 这个模板化语言,从构建之初,就考虑了 JSF 的组件生命周期。使用 Facelets,生成的模板会构建组件树,而不是 servlet。这就允许更好的重用,因为可以把组件组合成另一个组件。

Facelets 减少了编写定制标记才能使用 JSF 的需求。Facelets 本身就可以使用 JSF 定制组件。沟通 JSF 和 Facelets 只需要很少的特殊编码:要做的全部工作就是在 Facelet 标记库文件中声明 JSF 组件。在 Facelets 模板化语言中可以直接使用 JSF 组件,不用任何额外的开发。

Facelets 模板框架

在提供针对组件构建设计的模板框架方面,Facelets 与 Tapestry (请参阅 参考资料)类似。但是,对于具有 JSP 背景的我们来说,Facelets 看起来比 Tapestry 友好得多。它允许使用熟悉的 JSTL 样式的标记和 JSTL/JSF/JSP 样式的表达式语言。大大降低的学习曲线意味着可以更加迅速地开始开发。

Facelets 允许定义能够直接包含进页面或者容易地添加到 Facelet 标记库的组件集。实际上让人高兴的是在 Facelets 中定义定制标记(复合组件和类似 JSP 定制标记的标记)的迅速。使用这些组件集,Facelets 还允许定义站点模板(和更小的模板)。这与使用 Tiles 很相似,但是少了定义文件。也可以在定制 JSF 组件内部使用 Facelets,因为 Facelets API 提供了可以容易地与 JSF 组件集成的接口。

从 Tiles 到 Facelets

如前所述,在这里使用的示例 Web 应用程序基于为我的 针对怀疑者的 JSF 系列创建的示例。它为一家在线 CD 店管理库存,创建、读取、更新和删除(CRUD)清单。它包含一个表单,让用户向系统输入新 CD,有一个单选按钮列表,允许用户选择音乐分类。当用户选择了一个分类时,就触发某些 JavaScript 立即把表单提交回服务器。应用程序还包含一个 CD 清单,用户可以根据标题或艺术家对清单中的 CD 排序。


示例应用程序类 

在线 CD 商店示例的类图

 

【编辑推荐】

  1. JSF基础框架
  2. 使用G4JSF集成GWT和JSF
  3. 过渡技术的Ajax及Apusic JSF
  4. NetBeans中JSF的可视化开发
  5. 详细介绍Seam Remoting API和Ajax4jsf
责任编辑:佚名 来源: JavaEye
相关推荐

2009-06-24 13:06:41

JSF组件Facelets

2009-06-22 13:41:58

FaceletsJSF组件

2009-06-24 16:42:17

JSF和Facelet

2009-06-25 11:21:36

JSF流行名词

2009-06-29 13:22:19

JSF技术JSF组件

2009-07-07 17:18:57

Facelets介绍JSP与Facelet

2010-01-18 09:37:39

JSF 2.0Java EE 6

2009-06-29 14:30:27

JSF技术

2009-06-26 10:54:24

JSF技术

2009-06-24 15:44:59

JSF的加减法Seam

2009-06-26 13:20:50

JSF和Ajax

2009-06-24 17:21:23

JSF框架设计模式

2009-06-22 16:24:33

JSF框架中使用的设计

2015-09-01 15:45:50

开源字体Hack

2009-06-01 09:30:51

JSF2.0FaceletsAjax4JSF

2009-06-25 11:11:25

控制JSF切入点

2009-09-23 17:56:45

JSF入门

2016-12-22 13:32:04

服务化框架JSF解密

2016-01-25 09:32:37

容器网络SDN

2009-06-22 17:59:24

JSF基于Java的Web
点赞
收藏

51CTO技术栈公众号