大厂Data+Agent 秘籍:腾讯/阿里/字节解析如何提升数据分析智能。 了解详情
写点什么

JavaServer Faces 2.0 复合组件

  • 2008-11-08
  • 本文字数:1276 字

    阅读完需:约 4 分钟

自从 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

2008-11-08 08:351005
用户头像

发布了 88 篇内容, 共 269.6 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

行云管家支持信创吗?是真的吗?

行云管家

信创 国产化 行云管家

软通咨询杨念农:咨询2.0是企业数字化转型的大脑

软通咨询

数字化转型 #人工智能 管理咨询 数字化转型咨询

fastposter 新版本 v2.17.0 强势发布!让海报开发更简单

物有本末

图片处理 海报生成器 海报生成 海报小程序

百度智能云引领建设智能云标准生态,第十二届云计算标准和应用大会成功召开

Baidu AICLOUD

智能云 大模型 AI 原生云

什么是高匿代理,与普匿和透明代理的区别是什么?它有什么作用?

巨量HTTP

代理IP http代理

HarmonyOS Codelab样例—弹窗基本使用

HarmonyOS开发者

HarmonyOS

OpenHarmony Meetup常州站招募令

OpenHarmony开发者

OpenHarmony

专业级PDF编辑和管理 Acrobat Pro DC 2023 for Mac

胖墩儿不胖y

Mac软件 pdf编辑器 编辑pdf pdf工具

优化Java代码效率和算法设计,提升性能

互联网工科生

Java 并发编程 性能测试 数据结构和算法

公司需要同步大量数据,如何缓解传输压力提高同步效率?

镭速

数据同步 数据同步工具 数据实时同步

面对IT部门和业务部门跨网文件交换的不同需求,怎样才能兼顾呢?

镭速

跨网文件交换

基于异常上线场景的实时拦截与问题分发策略

百度Geek说

大数据 实时计算 企业号9月PK榜 反混淆

强大但并非万能,智能客服之挑战

百度开发者中心

智能客服 #人工智能 千帆大模型平台

Markdown文本编辑器Typora Mac使用教程

南屿

Typora Markdown 编辑器

详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

南屿

IntelliJ IDEA IntelliJ IDEA 2023破解 Serializable

3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT

华为云开发者联盟

鸿蒙 物联网 华为云 华为云开发者联盟 企业号9月PK榜

一文告诉你为什么时序场景下 TDengine 数据订阅比 Kafka 好

TDengine

时序数据库 #TDengine

CodeArts Check代码检查服务用户声音反馈集锦(3)

云计算 代码质量 华为云 代码检查

数字化转型与架构-架构设计篇|什么是架构风格和架构模式?

数字随行

数字化转型

2023年8款最佳云数据库综合比较

Geek_cbbf33

市面上支持信创的堡垒机哪家好?为什么?

行云管家

网络安全 信创 数据安全 堡垒机

未来AI领域的颠覆性力量

百度开发者中心

自然语言 #人工智能 文心一言

termius使用ssh教程 【XShell的神器Termius】

南屿

SSH Termius

Tugraph Analytics图计算快速上手之紧密中心度算法

TuGraphAnalytics

cc 图计算 紧密中心度

FIL NEW算力挖矿系统开发

l8l259l3365

JavaServer Faces 2.0复合组件_Java_Charles Humble_InfoQ精选文章