基于AJAX和JSF打造丰富的因特网组件之XUL篇(1)(4)
XBL可被用来把新的字段、属性和方法添加到XUL元素上。一个字段是一个简单的容器―它能够存储被检索和设置的值。相比之下,属性的概念稍微有些复杂,用于校验存储在域中的值或从XBL定义的元素属性中检索的值。由于属性不能存储值,所以无法在一个属性上直接设置值而且不必使用onset或onget处理器。通过使用这些处理器,开发者可以对被检索或修改的值进行预计算或校验(见图3)。
方法是对象函数(例如window.open()),它允许开发者把定制的函数添加到定制的元素。在XBL文件中,字段、属性和方法都是在一个实现元素(它是绑定元素的一个子元素,见列表4)内部定义的。在存取定制属性和方法之前,开发者可以使用getElementById函数来首先定位一个元素。在列表5中,添加了一个HTML按钮,它将触发onclick事件处理器。onclick事件处理器将执行指定的脚本―alert(document.getElementById('welcome').bob)―并且显示名为bob的域的值。
五、XBL事件处理
在XBL中,开发者能够直接把事件处理器添加到内容元素内部的单个XUL元素(例如,
在上面展示的XBL示例中,一个按钮被添加到welcome绑定上,并且添加了一个处理器以捕获在welcome绑定范围内的所有的click事件。
六、JSF组件模型
在本文使用的技术中,只有XUL被设计支持在Web应用程序中使用可重用的组件。XUL允许把HTML、CSS和JavaScript封装为单个组件,从而可以为应用程序开发者所重用。另一方面,AJAX解决了到服务器端的异步通讯问题―这可以为终端用户提供一种极具响应性的UI。
这些技术解决了大部分的消费者需求,但是仍然缺乏对于应用程序开发者的支持。我们需要一种可以通过Web发布的而且没有供应商锁定的标准方法来定义丰富因特网应用程序。
WHAT(Web超文本应用程序技术)小组正在制定一种标准的标签库针对于能工作在任何浏览器上的HTML扩展。同时,开发者还要使用最普通的HTML并且使用脚本来构建动态的Web应用程序(例如AJAX)。然而,这种开发Web应用程序的方法具有一种致命的缺点―没有实现模型重用或与现有服务器端逻辑的轻松集成。
JavaServer Faces为服务器端Web应用程序开发定义了一种标准组件模型。通过把JavaServer Faces和XUL与AJAX集成到一起,我们能够提供一种高度交互的丰富的因特网组件集―它也为Web应用程序开发者提供了一种标准的重用模型。
使用组件来取代标注是一种有效的模型―它允许应用程序开发者使用预制功能块来构建Web应用程序而不必关心实现细节。随着时间的过去,组件作者可以维持内部的实现而不影响应用程序开发者。
七、跨平台支持
对于今天的技术来说,跨平台支持是极其重要的。消费者已经在呼吁增加对新平台的支持,这些平台包括手持设备,远程登录客户端和即时消息通讯等等。
在大多数情况中,应用程序需要使用某种特定的平台所提供的特性,这方面工作往往相当耗时且代价昂贵。随着添加对于每种新平台的技术支持,时间和费用可能大幅度提高。
对于本文前面已经提到的技术,一种技术声称它具有跨平台的支持,这就是Mozilla的XUL。其实,这只是部分属实―你可以把一个XUL应用程序发布到任何Mozilla平台(GRE)支持的操作系统上。
你还可能对AJAX提供跨平台的支持尚有异义;但是,AJAX方案提供者的确需要保证每一种浏览器特定的技术都要得到支持。
总之,尽管你有很多的环境要发布,但是现在为止还没有完全的跨平台支持的解决方案。
八、期望标准化
现在,JSF已经为应用程序开发者提供一种标准化的服务器端。如今,我们也期待客户器的描述层开发也会形成一种标准化。
JSF把用户接口和应用程序分离开来,这使得组件开发者能够在不妨碍应用程序的前提下改变描述层。这并没有解决跨平台的问题或者HTML扩展,但是它能够帮助应用程序开发者以一种相当标准的方式来构建丰富因特网应用程序。
一名JSF组件开发者可以使用XUL的描述层和AJAX实现通讯,从而创建一种高度交互性的组件。如果客户端并不支持XUL,那么应用程序可以动态地依靠一种非XUL解决方案。通过使用一种通用的JavaServer Faces编程模型,应用程序开发者仍然能够构建一个支持多种生成技术的应用程序。
九、一个用JSF实现的并且支持XUL和AJAX的页面
显示在列表7中的JSF示例展示了一种使用可重用的JSF组件开发,其中以XUL和AJAX作为生成页面的技术。
注意,这部分代码中包含一个命名空间―它映射到一个定制的组件库―xmlns:bobh=" http://www.bob.org/jsf/html"和一个定制的组件―
该页面相应的源码与我们使用XUL或AJAX目前所看到的差别不大,但主要区别是,Web应用程序开发者不需要学习两种方式来实现在当今的浏览器中支持丰富因特网应用程序。
十、小结
本文向你展示了两种当前市场上构建丰富因特网应用程序(RIA)所依赖的视图技术―XUL和AJAX。这些技术已经被证实,能够向终端用户提供更为丰富的和高度交互的用户接口。本文中,我们也涉及到与这些技术相关的其它问题,例如基于非标准的平台支持和维护。
从长远来看,JavaServer Faces,作为一种UI组件技术,其潜力是不可估量的。从市场来看,这种组件开发者有可能提供给开发社团大范围的组件支持技术,从HTML到XUL,从无线的到甚至基于字符的解决方案。
在后面的文章中,我们将讨论如何利用AJAX和XUL技术构建可重用的JSF组件。
- 上一篇:使用AJAX异步获取数据
- 下一篇:基于AJAX技术的DataGrid控件编程