Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何利用p:ajaxStatus中的错误和成功方面_Jsf_Primefaces - Fatal编程技术网

Jsf 如何利用p:ajaxStatus中的错误和成功方面

Jsf 如何利用p:ajaxStatus中的错误和成功方面,jsf,primefaces,Jsf,Primefaces,我试图在JSF页面上向我的用户提供有关ajax请求的反馈。我定义了一个primefaces轮询组件,它定期向服务器和服务器发送请求。到目前为止,这一切都很顺利。我想让用户在primefaces ajaxStatus组件的帮助下了解当前状态。我将其定义如下: <p:ajaxStatus> <f:facet name="default"><h:outputText value="default"/></f:facet> <f:facet

我试图在JSF页面上向我的用户提供有关ajax请求的反馈。我定义了一个primefaces轮询组件,它定期向服务器和服务器发送请求。到目前为止,这一切都很顺利。我想让用户在primefaces ajaxStatus组件的帮助下了解当前状态。我将其定义如下:

<p:ajaxStatus>
  <f:facet name="default"><h:outputText value="default"/></f:facet>
  <f:facet name="start"><h:outputText value="start"/></f:facet>
  <f:facet name="success"><h:outputText value="success"/></f:facet>
  <f:facet name="error"><h:outputText value="error"/></f:facet>
  <f:facet name="complete"><h:outputText value="complete"/></f:facet>
</p:ajaxStatus>

我面临的问题是,成功和错误的方面永远都不可见,或者更准确地说,在足够长的时间内都不可见,以至于无法真正感知它们

现在,我验证了我定义的facet是否已转换为div,并正确生成了由前缀加上相应facet名称组成的id。我调试了相应的PrimeFacesJavaScript,发现它只应用了“display:none;”作为所有方面的内联样式,然后在ajax事件发生时再次从表示当前状态的方面删除样式

现在我不明白的部分是如何利用错误和成功的方面。完成事件始终紧跟在成功和错误事件之后。通过调试,我验证了成功和错误事件实际上是被触发的,并且它们的方面也是可见的。但是,成功/错误事件与随后的完整事件之间的时间非常短,您根本无法感知成功和错误事件的外观,即使屏幕闪烁也无法感知

现在我的问题是:

  • 关于如何使用错误和成功方面,有什么我在概念上不理解的吗
  • 是否有任何方法可以防止完整方面立即替换错误和成功方面?省略完整的方面没有任何效果。在ajax请求完成时,根本不会显示任何方面
  • 当成功和错误方面实际上从来都不可见时,它们又有什么意义呢
  • 编辑:在此期间,问题已得到解决。这是primefaces中的一个bug,将在版本6.3中修复。以下是我创建的相应bugreport:。 我还提供了一个解决问题的请求:。对于任何对解决方案感兴趣的人,您可以自己构建primefaces并对其应用以下更改:。这将解决问题

    感谢@kukeltje鼓励我将问题发布到primefaces bugtracker上

  • 没有

  • 组件的源位于中。您可以覆盖其中的
    bind
    trigger
    函数,以便在发生错误时延迟隐藏错误方面。你甚至可以让它主动关闭。。但是(见下文)

  • 没有

  • 。。。我从来没有用声明的方式处理错误。我总是用开始。。。所以我从未注意到这种行为。但是,对于javascript请求的技术处理中的错误,错误仍然是。不用于处理javascript ajax调用导致的服务器错误。例如,当internet连接断开时,您无法进行ajax调用。这些类型的错误

    解决方法是使用

    <p:ajaxStatus onstart="alert('Start')" oncomplete="alert('End') onerror="alert('Error')"/>
    

    该问题目前正在解决中,请参阅。完成后,我将更新问题和答案。谢谢你鼓励我发布一个问题。你甚至提供了一个拉请求,我注意到。。。伟大的在我不那么谦虚的观点中,PF来源是相当好理解/理解的