NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:35855
用户头像

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

关注

评论

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

Android Jetpack 之 Lifecycle - 2,2021移动开发者未来的出路在哪里

android 程序员 移动开发

Android P 应用兼容常见错误及建议,大牛教你怎么学习Android多进程

android 程序员 移动开发

Android 基础掌握好,面试基本不会倒!,android计算器源码

android 程序员 移动开发

Android mvvm 之 LiveData 的原理,2021年Android高级面试题

android 程序员 移动开发

Android 大厂面试 指南:他们到底需要怎样的工程师?(1)

android 程序员 移动开发

Android ShapeableImageView使用详解,告别shape、三方库(1)

android 程序员 移动开发

Android View的绘制流程,35岁技术人如何转型做管理

android 程序员 移动开发

Android MediaPlayer音频播放器详解,字节跳动高工面试

android 程序员 移动开发

Android O 适配详细指南,Android开发三年月薪才12K

android 程序员 移动开发

Android Retrofit 2,今天带你详细了解各组件原理

android 程序员 移动开发

Android Virtualview:淘宝、天猫 又一个动态化,android界面开发基础

android 程序员 移动开发

Android JVM面试专题:阿里100%会问到的c,Android开发工程师面试题

android 程序员 移动开发

Android ShapeableImageView使用详解,告别shape、三方库

android 程序员 移动开发

Android Sqlite数据库升级时注意事项,android移动开发基础题库

android 程序员 移动开发

Android 大厂面试 指南:他们到底需要怎样的工程师?,Android码农是如何进入腾讯的

android 程序员 移动开发

Android 子线程更新UI了解吗?,看这一篇就够了

android 程序员 移动开发

Android WebView判定网页加载的错误,androidkotlin面试题

android 程序员 移动开发

Android SDK 开发应该注意哪些?,阿里+头条+腾讯大厂Android笔试真题

android 程序员 移动开发

Android Socket使用详解,android开发入门与实战作者

android 程序员 移动开发

Android Tangram模型:手把手带你学习淘宝、天猫都在用的UI框架模型

android 程序员 移动开发

Android View的事件分流源码,安卓内存优化管理器

android 程序员 移动开发

Android 保活措施,retrofit原理

android 程序员 移动开发

Android 原生项目集成 Flutter,零基础android

android 程序员 移动开发

Android Matrix矩阵,跨平台移动开发ui

android 程序员 移动开发

Android NDK开发,使用ndk-build编译,androidkotlin教程

android 程序员 移动开发

Android ShapeableImageView使用详解,告别shape、三方库(2)

android 程序员 移动开发

Android UI—仿微信底部导航栏布局,android应用程序开发

android 程序员 移动开发

Android 中图片压缩分析(上),android绘制流程

android 程序员 移动开发

Android Studio 3,今年Android面试必问的这些技术面

android 程序员 移动开发

Android Studio 4(1),android面试必看书籍

android 程序员 移动开发

Android S新特性介绍-近似定位,快速学会

android 程序员 移动开发

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