dwr-engine.js

engine.js Functions

engine.js對DWR非常重要,因爲它是用來轉換來至動態生成的接口的javascript函數調用的,所以只要用到DWR的地方就需要它。

The engine.js file

每一個頁面都需要下面這些語句來引入主DWR引擎。

<script type"text/javascript" 
src="/[YOUR-WEB-APP]/dwr/engine.js"> 
</script>

使用選項

下面這些選項可以通過 DWREngine.setX() 函數來設置全局屬性。例如:

DWREngine.setTimeout(1000);

或者在單次調用級別上(假設Remote被DWR暴露出來了):

Remote.singleMethod(params, { 
callback:function(data) { ... }, 
timeout:2000 
});

遠程調用可以批量執行來減少反應時間。endBatch 函數中可以設置選項。

DWREngine.beginBatch(); 
Remote.methodInBatch1(params, callback1); 
Remote.methodInBatch2(params, callback2); 
DWREngine.endBatch({ 
timeout:3000 
});

可以混合這幾種方式,那樣的話單次調用或者批量調用級別上的設置可以複寫全局設置(就像你希望的那樣)。當你在一個批量處理中多次設置了某個選項,DWR會保留最後一個。所以如果 Remote.singleMethod() 例子在batch裏面,DWR會使用3000ms做爲超時的時間。

callback和exceptionHandler兩個選項只能在單次調用中使用,不能用於批量調用。

preHook和postHook選項兩個選項是可添加的,就是說你可以爲每一次調用添加多個hook。全局的preHook會在批量調用和單次調用之前被調用。同樣全局的postHook會在單次調用和批量調用之後被調用。

如果以上敘述讓你感到混亂,不用擔心。DWR的的設計往往和你想象中的一樣,所以其實這些並不複雜。

選項索引

下面是可用選項列表。

Option Global Batch Call Summary
async 1.1 1.1 1.1 設置是否爲異步調用,不推薦同步調用
headers 2.0 2.0 2.0 在XHR調用中加入額外的頭信息
parameters 2.0 2.0 2.0 可以通過Meta-datarequest.getParameter()取得的元數據
httpMethod 2.0 2.0 2.0 選擇GET或者POST. 1.x中叫&apos;verb&apos;
rpcType 2.0 2.0 2.0 選擇是使用xhr, iframe或者script-tag來實現遠程調用. 1.x中叫&apos;method&apos;
skipBatch 1.0* 2.1? - 某個調用是否應該設置爲batch中的一部分或者直接的。這個選項和上面都有些不同。
*沒有setSkipBatch()方法,批量調用是通過beginBatch()和endBatch()來控制的。
timeout 1.0 1.1 1.1 設定超時時長,單位ms

處理器(Handler)

Option Global Batch Call Summary
errorHandler 1.0 1.1 1.1 當出了什麼問題時的動作。1.x中還包括服務端的異常。從2.0開始服務端異常通過&apos;exceptionHandler&apos;處理
warningHandler 1.0 2.0 2.0 當因爲瀏覽器的bug引起問題時的動作,所以默認這個設置爲null(關閉)
textHtmlHandler 2.0 2.0 2.0 當得到不正常的text/html頁面時的動作(通常表示超時)

調用處理器(Call Handler) (註冊到單獨調用上的,而不是batch中的所有調用)

Option Global Batch Call Summary
callback - - 1.0 調用成功以後的要執行的回調函數,應該只有一個參數:遠程調用得到的數據
exceptionHandler - - 2.0 遠程調用失敗的動作,一般是服務端異常或者數據轉換問題。

Hooks (一個batch中可以註冊多個hook)

Option Global Batch Call Summary
preHook 1.0 1.1 1.1 遠程調用前執行的函數
postHook 1.0 1.1 1.1 遠程調用後執行的函數

全局選項(在單次調用或者批量調用中不可用)

Option Global Batch Call Summary
ordered 1.0 - - DWR是否支持順序調用
pollType 2.0 - - 選擇xhr或者iframe的反轉Ajax
reverseAjax 2.0 - - 是否查找inbound調用

廢棄的選項

Option Global Batch Call Summary
verb 1.0 1.1 1.1 2.0廢棄。使用&apos;httpMethod&apos;代替
method 1.0 1.1 1.1 2.0廢棄。使用&apos;rpcType&apos;代替

將來的

Option Global Batch Call Summary
onBackButton 2.1? 2.1? - 用戶按了back按鈕後的動作
onForwardButton 2.1? 2.1? - 用戶按了forward按鈕的動作

保證的責任

DWR的目的是讓你確切的知道所有調用的動作。知道了瀏覽器存在的bug,這是可以做到了。

如果你設置了callback, exceptionHandler, errorHandler, warningHandler 和 textHtmlHandler,DWR就應該 總是 爲每一個請求提供響應。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章