engine.js详解

翻译 2006年05月19日 10:08:00

   只要在DWR里用到马歇尔(marshall),engine.js是必须的.他生成了javascript函数的通用接口.
   所有DWR页面都需要下列的脚本元素来导入主要的DWR引擎.
   <script type='text/javascript'
     src='/[YOUR-WEB-APP]/dwr/engine.js'>
   </script>

   选项索引

   下列选项都是可行的.通过运用DWREngine.setX()函数来设置全局的或者运用{ timeout:500,

callback:myFunc}来设置调用或批调用.

      Option       Global          Batch           Call

     timeout       1.0              1.1              -
     errorHandler  1.0               -              1.1
     preHook       1.0              1.1             1.1
     postHook      1.0              1.1             1.1
     method        1.0              1.1              -
     verb          1.0              1.1              -
     async         1.1              1.1              -
     ordered       1.0               -               -
    warningHandler 1.0               -              1.1
     callback       -                -              1.0
    skipBatch      1.0*             2.0?             -
    onBackButton   2.0?             2.0?             -
   onForwardButton 2.0?             2.0?             -
   (*表示没有setSkipBatch(),而是用beginBatch()和endBatch()来控制的)


                            Errors, Warnings and Timeouts
                                      --Handling Errors and Warnings
  DWR总是会有一些错误,通过errorHandler,或warningHandler来显示错误信息.
  这些方法可以以弹出警告框,或状态提示的方式显示错误信息.
  用DWREngine.setErrorHandler(function)来提示错误,DWREngine.setWarningHandler(function)提示警告.
  Setting Timeouts
  DWREngine.setTimeout() 允许你为所有的DWR调用设置超时值(默认值是0),单位是毫秒.如果超时调用发生那么适当的错误处理就被调用.
  例子:
       Remote.method(params, {
         callback:function(data){ alert("it worked"); },
         errorHandler:function(message){ alert("it broke"); },
         timeout:1000
      });
      如果Remote.method()执行时间超过了1秒,那么就会显示"it broke".


                              Call Batching(批调用)
  你可以把远程调用组合起来作为批调用,这样就节省了往返于服务器间的时间,也很少涉及到延时了.  批调用由DWREngine.beginBatch() 开始,DWREngine.endBatch()结束.当调用了endBatch()时批远程调用就结束了.所以DWR就在服务器上执行他们一次. DWR确保了所有的回调被调用,所以你可以透明地返回批开启或结束.不要忘了调用endBatch() 否则你的远程调用将永远在队列里.
  警告:
     当然批调用是有副效应地,他不可能是同步地,也不能同时进行批调用. 所有地调用就像个钩子(hooks),比起单一的调用,批调用调用timeouts和errorHandlers的次数更多.  如果一个批调用中有两个不同timeout值的调用,那么所有至少是后一个将被忽略.


                                  Call Ordering(分类调用)
  只要AJAX的异步远程调用不能分类返回我们发送的东西的时候,DWREngine.setOrdered(boolean),(默认是false)允许我们请求我们发送的数据的精确分类.通过当老的请求完成时发送新的请求DWR能做到这点.

  警告:
     当为true的时候,你的应用会慢下来,如果信息丢失客户浏览器会反应迟钝.


                                 Remoting Hooks
  我们来看看DWREngine.setPreHook(function)和DWREngine.setPostHook(function).  如果你想在在DWR远程调用前被警告,你可以设置pre-hook函数.他会被无参地调用.这个Hook很有用,如果你想禁止某些组件在返回前被再次试用.  Post execute hooks 通常被用来和pre-execute hooks 一起协调工作,或取消由pre-execute hooks执行的修改. 了解他们请看DWRUtil.useLoadingMessage()函数


                                Remoting Options
  DWR怎样处理远程调用有很多选项,方法和动作能传输给用户,但是有不同的浏览器副作用.通常DWR会选择合适的方法给你,但是这些选项会有不必要的副作用.  DWREngine.setMethod(newmethod)这个方法不一定会被执行,我们只是首先来试试看.newmethod必须是DWREngine.XMLHttpRequest 或DWREngine.IFrame.DWREngine.setVerb(verb)允许你选择post或get为XMLHttpRequest和IFrame.一些浏览器不支持XHR-POST,DWR会切换到get,即使设置了post. DWREngine.setAsync(flag)我们想让XHR对象异步吗?默认是true.
                          警告:如果你用了iframes,这个可能会被忽略.不推荐设置为false,这会使你的浏览器慢下来,如果你必须这样做,那么请设置一个timeout.
 

 


DWR之其他概念:engine.js与util.js

DWR之其他概念:engine.js文件 ---------- 在范例程序中,我们引入了文件engine.js。该文件是DWR客户端的核心。这是一段javascript代码,用于把来自于动态生成的...
  • fhd001
  • fhd001
  • 2011年12月19日 19:15
  • 1849

dwr自动生成的js文件到底在哪里?

其实dwr根本没有生成任何“文件”。我们创建一个dwr项目后,想去查看它自动生成的js文件,不管你用什么方法搜索(比如google的桌面搜索引擎),都不会找到所谓的“dwr/interface/xxx...
  • kmyhy
  • kmyhy
  • 2008年06月13日 16:18
  • 10948

engine.js、util.js

engine.js+util.js 包含在dwr.jar 中
  • okkeqin
  • okkeqin
  • 2012年12月29日 22:11
  • 415

引用dwr自动生成的js文件

上一篇搭建好项目,这次该构建页面进行测试了 接着上一次的,它提示了要引入几个js文件 结果我竟傻傻的到官网上把源码下下来,从上面找这几个文件 当然运行不了, 最后才发现这些js文件是自动生成的, 尽管...
  • archie2010
  • archie2010
  • 2010年11月29日 16:10
  • 2420

dwr-util.js

util.js包含了一些工具函数来帮助你用javascript数据(例如从服务器返回的数据)来更新你的web页面。 你可以在DWR以外使用它,因为它不依赖于DWR的其他部分。你可以下载整个DWR或者单...
  • impeller
  • impeller
  • 2008年04月09日 22:17
  • 1656

Dwr与Jquery冲突解决办法以及DWR调用问题

一:JQUEYR与DWR冲突问题: $()函数(它是合法的JS名字),很多JS框架都会用“$”命名方法来获取页面元素。 都是从Prototype学来的主意。 大略的讲$=document.get...
  • hbhgjiangkun
  • hbhgjiangkun
  • 2012年12月19日 17:12
  • 3366

DWR 的运行原理

 使用DWR已经好长一段时间了,可是今天才知道它的工作原理,下面与大家分享,如果有什么不对之处,欢迎指出,大家一起讨论...        使用DWR时,页面需要导入engine.js文件,另外还需要...
  • liuzhenfeng
  • liuzhenfeng
  • 2009年12月30日 20:32
  • 4109

深入dwr2之三 Dwr2页面请求处理机制分析之engine.js

DWREngine是dwr在客户端的存根,它其中的方法基本上不需要用户来直接调用;通常你会在服务器的dwr.xml定义需要暴露的java类及其可调用方法,dwr会根据这个配置文件自动生成一个dwr/i...
  • u013890660
  • u013890660
  • 2014年03月27日 12:22
  • 1399

engine.js[dwr]javascript

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); *...
  • renbaoyong
  • renbaoyong
  • 2007年04月23日 22:22
  • 3938

jsp里引用jar包里的js解决dwr2.0 reverse ajax没启用问题

最近学习dwr的reverse ajax,自己写一个web聊天小程序,基本上和官方的例子差不多,但是,最后却出了个小问题 两个客户端可以聊天,但是别人的聊天信息只有自己向服务器端发送请求后能看到。 ...
  • tigerrose
  • tigerrose
  • 2011年08月15日 14:56
  • 1641
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:engine.js详解
举报原因:
原因补充:

(最多只允许输入30个字)