DWR JavaScript 库

阅读更多

    DWR 包含了几个JavaScript库,它们对于DWR能够工作是必须的,并且对于开发人员也是很有帮助的:engine.js、util.js、以及gi.js。

    engine.js 是 DWR 的浏览器端功能的核心,使用 AJAX 和 DWR 的所有页面都需要用到它。

    util.js 包含了一些有用的工具函数,DWR 不需要它。

    gi.js 用于在Ajax应用中实现DWR和TIBCO General Interface 的集成。

 

1、engine.js

    它里面的一些函数能够 marshal 来自动态生成的JavaScript函数对服务器端远程java类的调用。

    所有的HTML页面都要引用该JS。

    engine.js 库中有许多选项和方法。该库中的函数都用 dwr.engine 作为前缀,它还有一些方法用来为错误和警告设置处理器方法。

    DWR 就是设计自动运用管理正确的选项和方法,因此在许多情况下,我们不需要设置任何选项。然而,有时又是必要的。特别是当浏览器不像预期的那样时,就需要修正这些浏览器怪癖。

    其中一些选项和DWR是如何处理来自浏览器对服务器的调用相关的。有一个选项叫 async ,它的值要么是 true 或 false。如果设置成 false,那么就以同步方式和服务器联系。例如:

NavigationTree.getChildren(value,{

  async:false,

  callback:function(childElements)

  {

    for (index in childElements)

    {

     ....

    }

  }

  });

    上面的例子就是当页面加载时生成一个导航树。如果加载是异步的,功能就会受到影响,因为异步操作会导致结果不可预料,用户的体验就会相当不好。engine.js 还被用于设置一些 pre 以 post 函数,它们在远程调用 开始前以及结束后调用。该特性对于调试很有用,以及向用于界面做一些通知也要用到,例如禁用组件,Post 函数中就可以将之前禁用的组件启用。

dwr.engine.setPreHook(requestStart); 

dwr.engine.setPostHook(requestEnd);

function requestStart() 

  alert(‘Request start'); 

 

function requestEnd() 

  alert(‘Request end');

}

    engine.js 还能够以批处理的方式同时调用多个远程函数。

dwr.engine.beginBatch();

WorldMap.getEvents(callback:function(results){…});

WorldMap.getArea(coordinates, showPreview);

WorldMap.sendEvents(events, result);

dwr.engine.endBatch({

  timeout:5000

});

    DWR 还有个特性叫 call ordering。当开启了此特性,以怎样的顺序发送远程调用,响应的顺序就是怎样的。默认是没有启用的,如果启用了,可能会使应用变慢。在 web 页面上 加上dwr.engine.setOrdered(true),它会影响该页面上的所有DWR调用。

 

2、util.js

    没有 DWR 的其他部分也能使用该js。不过有个例外,就是 useLoadingMessage()函数。

    它其中有些函数用于操作HTML元素,包括 tables、lists、以及 images。

    有些函数中有一个值得一提的参数选项叫 escapeHTML:false,默认是true(意味着所有的HTML元素都会被escaped,特别是 < > & 双引号 但引号,这可以阻止跨网站脚本攻击).

 

3、gi.js

    TIBCO General Interface 是一个开源库,它里面包含了一些已经搞好的AJAX组件以及一些工具用于帮助使用了GI 的Ajax应用的开发。

    例如,gi.toCdfDocument(),它可以从javaScript对象生成 CDF(Common Data Format) 文档。CDF 是 TIBCO GI 的通用格式,用于 TIBCO GI 组件间共享数据,执行数据映射以及在客户端控件间传递数据。

 

你可能感兴趣的:(DWR JavaScript 库)