JavaServer Faces 2.0草案发布——增强JavaScript库的交互性
2008-06-24 14:38
513 查看
JavaServer Faces 2.0草案发布——增强JavaScript库的交互性
作者 Dionysios G. Synodinos译者 张龙 发布于 2008年6月20日 上午1时34分社区 Java 主题 JavaScript, Web 2.0, Web框架, JCP标准 标签 AJAX, OpenAjax联盟, JSF
JSR 314草案已经发布到JCP下了。该JSR的目标是将JavaServer Faces规范1.2版升级到2.0版。这个下一代的JSF是将web应用开发中的优秀思想带到Java EE平台的一个尝试,并且不断从社区中获得积极反馈,尤其是其增强的AJAX支持。
在JCP的页面上总结了该版本JSF的几个主要目标:
专家组提出的观点涵盖以下方面:
对于使用图形化IDE和命令行的开发者来说,最大化web应用开发的效率。
在产品的生命周期内,最小化web应用维护的复杂性。
通过有效使用Ajax技术简化响应界面的创建。这包括把几乎所有的MVC控制器UI逻辑和内部页面组件交互放到客户端,同时在服务器端保留敏感级的应用逻辑。同时当JavaScript被禁用或者不可用时考虑如何优雅地退化也是非常重要的。
通过继续支持无需在客户端使用JavaScript的、功能完备的、基于服务器的web应用,从而使你的Web应用扩展成为可能。
利用模块化来加强JSF框架和其它客户端及服务器端的web应用技术的集成性。这使得开发者能更加轻松地使用JSF的单个部分,而无需使用其全部。例如,即使没有JSF视图呈现时,请求处理的生命周期也是可用的。再比如,JSF具有鲁棒的I18N与L10N特性。你可以为UI使用这些特性而无需使用JSF组件。简而言之:“易于mashup”。
通过使用Java持久化API进而方便地展现数据。
在JSF 2.0草案发布前,社区提出了一些请求,希望增加几个新特性。Shay Shmeltzer在JDJ上发表了一篇文章,列举出了他对JSF下一个版本的希望,这可以被总结为如下几点:
使JSF的AJAX集成标准化
简化JSF组件的构建
增加更多的状态
将一个新的组件增加到JSF Flow中
使Flows可重用
将声明式UI增加到业务组件绑定中
JSF 2.0草案所关注的问题之一就是利用开放的Ajax注册来解决JavaScript语言缺少命名空间支持的缺陷。开放Ajax联盟是使用Ajax的厂商和开源项目所形成的一个组织,旨在维护OpenAjax注册(一个集中、业界范围的Ajax注册授权,目的在于保持一个业界统一的Ajax运行时列表,以防止对象冲突)。
该注册具有如下好处:
该注册能防止JavaScript和标记冲突,并提供了其他一些好处:
Ajax库开发者可以使用该注册:
确保其JavaScript全局对象、运行时扩展(JavaScript和DOM)及特定于库的标记不会与其他Ajax库的名字发生冲突。
协调他们的工作以扩展JavaScript环境,这样可以使得多个库为其扩展共享同样的名字和规范
浏览器厂商可以使用该注册:
确保浏览器中新增的内置JavaScript特性不会与业界已经使用的名字发生冲突
Ajax应用开发者可以使用该注册:
确保在其应用中使用的任何JavaScript全局变量不会与流行的Ajax库的全局变量发生冲突
正如JSF 2.0草案所述:
有一个已经注册到开放Ajax联盟的顶级命名空间——javax:
Java Ajax: { namespaceURI: http://www.sun.com, version: "1.0", globals_to_approve:["javax"], comments: "Used in the JSF 2.0 specification.", specificationURI:"http://www.jcp.org/en/jsr/detail?id=316", email: "jsfaces@sun.com" }
为了遵守OpenAjax联盟的约定,当JavaScript文件被获取并由浏览器的JavaScript引擎解析时,库必须要使用OpenAjax.registerLibrary()来注册自己。
任何使用JavaServer Faces 2.0 JavaScript API的页面必须要定义一个名为javax的顶级JavaScript对象,其类型是JavaScript联合数组(associative array)。在这个顶级JavaScript对象内,建立起OpenAjax Hub,其中必须有一个名字叫做faces的属性,其值必须是另一个JavaScript联合数组。在这个faces对象中,在键Ajax下还必须有另一个JavaScript数组。
if (javax == null || typeof javax == "undefined") { var javax = new Object(); } if (javax.faces == null || typeof java.faces == "undefined") { javax["faces"] = new Object(); } if (javax.faces.Ajax == null || typeof javax.faces.Ajax == "undefined") { javax.faces["Ajax"] = new Object(); }
你可以访问http://www.infoq.com/webframework以了解关于Java或者其他Web框架更多的信息。
查看英文原文:Early Draft released for JavaServer Faces 2.0 - Improved Interoperability for JavaScript Libraries
http://www.infoq.com/cn/news/2008/06/jsf-2.0-early-draft
相关文章推荐
- JavaServer Faces 2.0草案发布——增强JavaScript库的交互性
- JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer..Maven Java EE Configuration
- JavaServer Faces 2.0 can not be installed解决方案
- JavaServer Faces 2.0 can not be installed解决方案
- JavaServer Faces 2.0 can not be installed解决方案
- 通过数据库生成 JavaServer Faces 2.0 CRUD 应用程序
- JavaServer Faces 2.0 can not be installed解决方案
- JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer..Maven Java EE Configuration
- 通过数据库生成 JavaServer Faces 2.0 CRUD 应用程序(02)
- JavaServer Faces 2.0 can not be installed解决方案
- JavaServer Faces 2.0复合组件
- 读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 4 章 标准 JSF 标签——案例 javascript
- JavaServer Faces 2.0 can not be installed解决方案
- JavaServer Faces 2.0 can not be installed
- JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer..Maven Java EE Configuration
- openjdk.net网站发布的一项Java增强提案
- 使用 Java Persistence API 与 JavaServer Faces 开发 Web 应用程序(转)
- JSF技术介绍(JavaServer Faces Technology:chapter 9)《注:未完成》
- Java Server Faces(JSF)历险(二),事件响应
- JavaServer Faces 1.2 入门,第 1 部分: 构建基本应用程序