2014-02-14 55 views
3

我有一個頁面,這取決於大量的部分刷新進行交互。我不打算使用保持會話活動機制,但我想捕捉錯誤響應到我的部分刷新,提醒用戶他們的會話過期/他們需要刷新,一旦他們執行一個window.location.reload我已經知道了警報。具體而言,由用戶嘗試部分刷新(本質上純粹通過CSJS)來進行事件驅動。將錯誤函數添加到XPages部分刷新(dojo.xhrPost)事件?

我知道從使用Chrome開發者工具,部分刷新顯示爲Post請求,它返回的HTML的部分(刷新區域)加上任何必需的CSJS。我也知道,正如Dojo 1.6中關於dojo.xhrPostGet)所記錄的,支持一個錯誤處理參數,我可以通過它來傳遞我想要創建的函數。目前我不確定如何將此函數添加到我的dojo.xhrPost請求中。

看到this XSnippet, "Cache Prevention for Dojo xhr requests",它允許將preventCache選項添加到dojo.xhr請求,我覺得這是正確的方法。再次,這是我不確定的實現。我很失望地發現它引用的鏈接http://www.juliusbuss.de/web/youatnotes/blog-jb.nsf/dx/a-big-issue-for-mobile-web-apps-with-xpages-for-iphone-and-ipad-and-how-to-solve-it..htm對我來說不起作用。

  1. 我不確定我是否可以像引用的XSnippet(或哪個是最佳參數位置)那樣使用相同的參數argument [1]。
  2. 此外,我不是100%確定是否需要進一步指定dojo xhrPost事件,或者只是使用dojo.xhr就足夠了。

會喜歡更有經驗的視角。

+0

這裏的鏈接朱利安的博客文章:http://julianbuss.com/blog/a-big-問題爲移動網絡應用程序與XPAGE爲iPhone和iPad的和如何解決它的HTM/ –

+0

看看這個問題:http://stackoverflow.com/問題/ 11402658/how-can-you-report-or-display-an-error-from-an-xsp-partialrefreshpost-call –

+0

PHL:感謝您的更新鏈接。希望這會在XSnipets上得到更新?我不是自定義XSP.partialRefreshPost,它是通過xp:eventHandler屬性refreshMode =「partial」和refreshId =「containerId」觸發的刷新。你是否建議我切換到「不更新」並以編程方式在onComplete階段調用它?我希望只通過一次性腳本塊擴展dojo.xhr請求(相對於許多可能的動作調整我的刷新邏輯)。 –

回答

5

下面是一個例子如何重寫錯誤功能爲每partialRefresh

// hijack the dojo function if required 
if(!dojo._xhr) 
    dojo._xhr = dojo.xhr; 

var _error; 

dojo.xhr = function(){  
    try{ 
     var args = arguments[1]; 
     _error = args["error"]; // save the original error function 

     // add your own method 
     args["error"] = function(arg1, arg2){ 
      alert("Hello World!"); 
      _error(arg1, arg2); 
     } 
     arguments[1] = args; 
    }catch(e){} 
    dojo._xhr(arguments[0], arguments[1], arguments[2]); 
} 
+0

非常好!感謝您的幫助。 XPage的另一個成功發展。我認爲數組符號(讓我更加頻繁,而不是我所承認的)越來越意識到這是新的賦值,然後添加現有的錯誤處理。感謝您的評論。 –

+0

我很想看看你使用的Sven提供的示例中的結束代碼。請解釋你是如何實施的! –

相關問題