gpt4 book ai didi

jsf - 我需要将 Primefaces AJAX 状态对话框的显示延迟 X 毫秒

转载 作者:行者123 更新时间:2023-12-04 18:43:47 25 4
gpt4 key购买 nike

我需要将 Primefaces AJAX 状态对话框的显示延迟 X 毫秒,但 OmniFaces ExceptionHandler 对 javascript 超时解决方案的 react 很差。

这是我到目前为止所得到的:

<p:ajaxStatus onstart="showStatusDialog();" onsuccess="hideStatusDialog();" onerror="hideStatusDialog();"/>

<script type="text/JavaScript">
var statusDlgTimer = null;

function showStatusDialog()
{
if (statusDlgTimer === null)
{
statusDlgTimer = setTimeout("statusDialog.show()", 700);
}
}

function hideStatusDialog()
{
if (statusDlgTimer !== null)
{
clearTimeout(statusDlgTimer);
statusDialog.hide();
statusDlgTimer = null;
}
}
</script>

只要 AJAX 调用中没有发生错误,这就能完美运行。我正在使用 OmniFaces FullAjaxExceptionHandler 来处理 AJAX/非 AJAX 异常。

我的假设是,由于在呈现错误页面时重新加载了 JavaScript,因此从未检测到对 statusDlgTimer 的引用为 !== null,但我还没有找到好的解决方法。

最佳答案

FullAjaxExceptionHandler基本上用错误页面的内容替换整个 HTML 文档树,特此替换 <p:ajaxStatus> “迷路”及其 oncomplete永远不会被调用。你基本上需要调用 hideStatusDialog()也来自错误页面的 HTML 源代码。也许是这样的:

<h:outputScript target="body">hideStatusDialog();</h:outputScript>

更好的是,使用 $(document).ajaxStart() , ajaxComplete() ajaxError() 在全局 JS 文件中而不是整个 <p:ajaxStatus> .

关于jsf - 我需要将 Primefaces AJAX 状态对话框的显示延迟 X 毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com