|
< h:outputText id="dup" value="#{bean.text}" />
< a4j:commandButton reRender="dup" value=" Submit"/>
用户不仅需要记住额外的tag用法,还需要知道此Ajax请求需要更新页面哪个控件的值。而通过Apusic OperaMasks技术,用户只需要采用标准JSF组件的写法:
< h:outputText value="#{bean.text}" />
< h:commandButton value="Server Submit" />
然后,用户只需要指定此form的Render Kit是Ajax,或者在配置文件faces-config.xml中,将全局Render Kit置成Ajax即可。用户无需记住其它tag的用法,也无需了解更新哪些控件,甚至根本就不必要关心什么是Ajax!
3.3 与其它Ajax开发框架的区别
同样,这个世界还存在许多Ajax Framework,譬如dojo。我们并不否认这些Ajax开发框架的优秀,但是,与它们的优点同样明显的局限之处是:dodo之类的Ajax开发框架仅仅解决了客户端的问题,对任何服务器端逻辑,dojo无能为力。J2EE是一个整体,它不仅需要解决表现层问题,也要解决数据层和逻辑层的问题,JSF是JavaEE 5.0的一个重要组成部分,这就使得Apusic OperaMasks不仅可以创建丰富的客户端体验,同时可以和JavaEE应用服务器结合,从而建立强大的服务器端逻辑绑定。
3.4 组件对Ajax的支持:
与此同时,Apusic OperaMasks提供了部分特殊组件,以更有效的支持Ajax特性,譬如:
renderGroup:能够改造过时的应用,使其支持AJAX。在AJAX出现之前或基于其他JSF框架所编写的组件或应用有时并不能很好地运行在OperaMasks中,renderGroup能够为这些组件提供一个AJAX的渲染环境,使其达到AJAX的运行效果。
updater:装载和刷新页面的一小部分,使页面变成桌面。我们可以将页面的某些区域定义成一个独立刷新区,这些区域具有独立的交互环境和生命周期,当在这些独立区域中进行交互操作时他们被单独刷新,页面的其他部分不受影响。你可以单独开发和调试一些小应用,然后用updater将这些小应用组装成一个完整的应用。使用这样的技术将不再需要购买昂贵的Portal Server,在运行的时候和Portal没有什么区别。
event binding:如果必要,可以在服务器端处理客户端事件(譬如当某个客户端事件需要从服务器中获取数据进行响应);
client validator:本该由服务器处理的数据校验可以在客户端执行。JSF默认提供了许多数据验证器,常规JSF引擎的实现总是在服务器端进行验证,这样的话,每次与服务器的交互总是会带来一定的性能损失,而Apusic OperaMasks能够在不更改代码的情况下,在客户端进行数据验证。
总而言之,Apusic OperaMasks对Ajax的支持是原生的,是从引擎级别予以支持的,在Apusic OperaMasks中,Ajax is Everything!
4.Rich Components!
Apusic Operamasks提供了许多丰富的组件,我们称之为“Rich Components”。无须赘述的是,这些Rich Components从骨子里提供了Ajax的支持。在这里我们没有重新发明一次车轮,而是采用了广受好评的Ext JS(http://extjs.com)来实现Rich Components,但OperaMasks和Ext JS之间的联系并不紧密,如果必要,完全可以通过更换Render Kit的方式用其他的富客户端组件库来代替。这些组件都是面向数据的,可以用JPA、Hibernate、或直接用JDBC将数据准备好,交给这些组件去展现。同一组数据可以用不同的组件来展现,无论是DataGrid, DataView还是Chart,对数据的展现过程都是一样的。当数据需要更新时,通过AJAX和JSON完成与服务器的交互。我们有:
TreeView:用来组织你的数据
DataGrid:用表格展现你的数据
Chart & Report:以图表形式展现数据
DataView:用任何你能想到的方式展现你的数据
5.Rich Form
OperaMasks 提供的Rich Components提供了许多额外的特性,除了原生的Ajax支持以外,还具备自定义风格、换肤功能等,这是对JSF常规标准组件的一种有益扩展。
那么,标准JSF组件是否能够通过Apusic OperaMasks获得这些能力?让我们再变一次魔术。

左图是一个常规的标准JSF组件的样态,当我们修改这个form的属性rich=”true”时,或者在web.xml中配置一个全局环境变量:
<context-param>
<param-name>org.operamasks.faces.FORM_RICH</param-name>
<param-value>true</param-value>
</context-param>
上一篇:通过分析SQL语句的执行计划优化SQL(七)
下一篇:Shell编程入门:Linux解释器原理详细介绍
|