【问题标题】:Adding Error Function to XPages Partial Refresh (dojo.xhrPost) Events?向 XPages 部分刷新 (dojo.xhrPost) 事件添加错误函数?
【发布时间】:2014-02-14 16:09:20
【问题描述】:

我有一个页面,它依赖于交互的一些部分刷新。我不希望使用保持会话活动机制,但我想捕获错误响应对我的部分刷新,提醒用户他们的会话已过期/他们需要刷新,执行一个窗口。 location.reload 一旦他们确认了警报。具体来说,由用户尝试部分刷新(本质上纯粹通过 CSJS)来驱动事件。

通过使用 Chrome DevTools,我知道部分刷新显示为 Post 请求,它返回 html 的部分(刷新区域)以及任何必需的 CSJS。我也知道,正如 Dojo 1.6 中关于dojo.xhr(Post 和Get)所记录的那样,它支持错误处理参数,通过它我可以传递我想要创建的函数。我目前不确定如何将此函数添加到我的 dojo.xhrPost 请求中。

看到this XSnippet, "Cache Prevention for Dojo xhr requests",它允许向dojo.xhr 请求添加preventCache 选项,我觉得这是正确的方法。同样,这是我不确定的实现。我很失望地发现它引用为源的链接 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 中相同的参数 arguments[1](或者哪个是最佳参数位置)。
  2. 另外,我不能 100% 确定是否需要为 dojo xhrPost 事件进一步指定此内容,或者仅使用 dojo.xhr 是否足够好。

希望有更有经验的观点。

【问题讨论】:

  • 这里是 Julian 博客文章的链接:julianbuss.com/blog/…
  • PHL:感谢更新链接。希望这也会在 XSnipets 上得到更新? Sven:我自己没有定义 XSP.partialRefreshPost,它是通过属性 refreshMode="partial" 和 refreshId="containerId" 的 xp:eventHandler 触发的刷新。您是否建议我切换到“无更新”并在 onComplete 阶段以编程方式调用它?我希望只扩展通过一次性脚本块发生的 dojo.xhr 请求(而不是为许多可能的操作调整我的刷新逻辑)。
  • 我已经更新了 XSnippets 条目中的链接 :-)

标签: javascript dojo xpages


【解决方案1】:

这是一个示例,如何为每个 partialRefresh 覆盖 error 函数:

// 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] );
}

【讨论】:

  • 太棒了!感谢您的帮助。 XPages 开发的另一个胜利。我认为数组符号(让我比我愿意承认的更频繁)妨碍了意识到它是新的分配,然后添加回现有的错误处理。也感谢 cmets。
  • 我很想看到您在 Sven 提供的示例中使用的最终代码。请说明您是如何实现的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多