2014-02-14 34 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提供的示例中的结束代码。请解释你是如何实施的! –

相关问题