Jsf 我需要将Primefaces AJAX状态对话框的显示延迟X毫秒
我需要将Primefaces AJAX状态对话框的显示延迟X毫秒,但OmniFaces ExceptionHandler对javascript超时解决方案的反应很差 以下是我目前得到的信息:Jsf 我需要将Primefaces AJAX状态对话框的显示延迟X毫秒,jsf,primefaces,omnifaces,Jsf,Primefaces,Omnifaces,我需要将Primefaces AJAX状态对话框的显示延迟X毫秒,但OmniFaces ExceptionHandler对javascript超时解决方案的反应很差 以下是我目前得到的信息: <p:ajaxStatus onstart="showStatusDialog();" onsuccess="hideStatusDialog();" onerror="hideStatusDialog();"/> <script type="text/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>
var statusDlgTimer=null;
函数showStatusDialog()
{
如果(statusDlgTimer===null)
{
statusDlgTimer=setTimeout(“statusDialog.show()”,700);
}
}
函数hideStatusDialog()
{
if(statusDlgTimer!==null)
{
clearTimeout(statusDlgTimer);
statusDialog.hide();
statusDlgTimer=null;
}
}
只要AJAX调用中没有错误,这就可以完美地工作。我使用OmniFaces FullAjaxExceptionHandler来处理AJAX/非AJAX异常
我的假设是,由于在呈现错误页面时会重新加载JavaScript,因此从未检测到对statusDlgTimer的引用!==null,但我还没有找到一个好的解决方法。FullAjaxExceptionHandler基本上用错误页面的内容替换了整个HTML文档树,因此,
“get lost”及其oncomplete
永远不会被调用。您基本上还需要从错误页面的HTML源内部调用hideStatusDialog()
。也许是这样的:
<h:outputScript target="body">hideStatusDialog();</h:outputScript>
hideStatusDialog();
更好的是,使用,在一个全局JS文件中,而不是在整个
中,在一个同事的帮助下,我实际上找到了另外两个解决方法,后者类似于BalusC的解决方案