InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

JavaServer Faces 2.0复合组件

作者 Charles Humble 译者 张龙 发布于 2008年11月8日

领域
架构 & 设计,
企业架构,
语言 & 开发
主题
Java ,
Web框架 ,
JCP标准 ,
Web 2.0
标签
AJAX ,
Java EE ,
JSF

自从JavaServer Faces于2004年首次发布后,JSF 2.0就成为Java EE标准规范的首个主要更新。JSF 2.0是JSF规范的一次重要革新,其目的在于解决开发者使用Web框架时所遇到的诸多问题。主要的变化包括:

  1. 使用基于Facelets的视图技术代替JSP。
  2. 提供一种标准化的资源处理机制:很多组件都需要诸如JavaScript文件、图片或者是CSS元素等内容来正确地进行渲染。JSF 1.x无法方便地处理这些内容,所以组件开发者不得不开发自己的处理机制。
  3. 可重新定位的资源:我们可以指定在哪里渲染资源,这个渲染位置可能与视图中的资源标签位置不同。这使得我们可以定制组件和JSF页面以在恰当的地方渲染引用的资源,这样即使组件被包含在body中,我们也可以在中引用CSS文件。
  4. 系统事件:发布/订阅的事件模型所支持的事件不再特定于一个具体的应用,而是起源于JSF应用执行过程中的特定时间点。UI组件和应用对象(这是一个单例)都能收到系统事件。
  5. 增加的scopes:增加了视图scope和组件scope。对对话scope的支持预计会通过Web Beans API增加。
  6. “project stage”参数的标准化:Project stage提供一种方式来影响JSF的行为,这以一组预先定义好的阶段枚举为基础,而这些阶段可以通过上下文参数或者JNDI进行设置。比如说,产品化开发和检查期间可以在浏览器中显示更多的调试信息。已定义的阶段有产品化、开发、单元测试、系统测试及产品化扩展阶段,并将产品化扩展作为默认值。你可以在运行时通过调用Application.getProjectStage()来查询应用对象以获得相应的值。
  7. 通过使用注解和默认值来减少XML。
  8. 扩展JSF 1.2中引入的AJAX支持。

JSF 2.0一下子提供这么多改进的目的在于解决开发者在使用JSF 1.x时遇到的一个主要问题——构建自定义组件的复杂性。使用JSF 1.x时,组件开发者要想开发出可以使用在标记页面上的自定义组件必须得遵循大量步骤。至少要实现JSP或Facelets的标记处理器,同时还要为该组件提供一个渲染器,这两项工作都需要在faces-config.xml文件中进行相应的配置。以JSF为中心的Facelets是JSP的一个替代方案,被JSF开发者广泛使用,它通过复合组件来支持模板,这在一定程度上改进了JSF。这种方式需要创建一个包含模板标记和组件的XHTML页面,然后将这些页面作为组件在其它页面中使用。任何有效的Facelet XHTML页面都可以作为组件使用,与JSF 1.x中使用Facelets不同,JSF 2中的复合组件都是真正的UIComponents,这样它们就会支持验证器、转换器及监听器(可以监听行为和值的变化)。复合组件以资源的形式被处理, 因此它们可以使用新式的标准资源处理机制。例如,有一个名为MenuPanel.html的Facelet标记文件位于ezcomp资源库中,页面创建者就可以声明xml名称空间xmlns:ez=http://java.sun.com/jsf/composite/ezcomp,并在页面中包含& lt;ez:menuPanel />标记,以此来使用该组件。

JSF 2.0专家组已经发布了JSF 2.0的第二个草案,该草案可从JCP站点上下载。该草案还有一个实现。规范的最终草案将会于今年年底出台。

查看英文原文:JavaServer Faces 2.0 Composite Components

译者 张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。

JSF标准终于大量吸收了社区的优秀实践,前景光明 发表人 Hua Yan 发表于
Re: JSF标准终于大量吸收了社区的优秀实践,前景光明 发表人 zhou leon 发表于
希望引入一种完善的look and feel的机制 发表人 Wang Ray 发表于
  1. 返回顶部

    JSF标准终于大量吸收了社区的优秀实践,前景光明

    发表人 Hua Yan

    1.facelets这是必须的,即使在用jsf1.1也最好使用facelets
    2 、3.这一点吸取了richfaces
    5.ViewScope非常有用,spring web flow已经支持了,希望能和webbean更好的集成,方便会话范围
    6.吸取了rails

  2. 返回顶部

    希望引入一种完善的look and feel的机制

    发表人 Wang Ray

    1 希望引入一种完善的look and feel的机制, Richfaces等虽然有相应的实现,可是不够方便,而且只是应用级别的,实现级别都算不上,应该从规范级别上进行限定.否者库之间的移植成问题.
    2 完善的exception处理机制, 很多异常都只能乱抛,完全没有系统化.如果后端用seam,可以做一定的弥补,但是不够
    3 提供一种便利的机制访问component tree的元素
    4 scope机制, 这个很重要,前面有人已经说了.在Webbeans(seam)里配套也可以
    5 简化lifecycle,至少应该在开发层简化...
    6 暂时只想到以上...

  3. 返回顶部

    Re: JSF标准终于大量吸收了社区的优秀实践,前景光明

    发表人 zhou leon

    我觉得jsf在渲染速度上也应该有所提升

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。