我需要将 Primefaces AJAX 状态对话框的显示延迟 X 毫秒,但 OmniFaces ExceptionHandler 对 javascript 超时解决方案反应不佳。
这是我到目前为止得到的:
<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,但我还没有找到一个好的解决方法。