【发布时间】:2018-04-25 09:33:11
【问题描述】:
我正在尝试在 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>
我面临的问题是成功和错误方面永远不可见,或者更准确地说,在足够长的时间内永远不可见以实际感知它们。
现在我验证了我定义的构面已转换为具有正确生成的 id 的 div,该 id 由前缀加上相应的构面名称组成。我调试了相应的primefaces javascript,发现它只是应用'display:none;'作为所有方面的内联样式,然后在发生 ajax 事件时再次从表示当前状态的方面中删除样式。
现在我不明白的部分是如何利用错误和成功方面。完成事件总是紧跟在成功和错误事件之后。通过调试,我验证了成功和错误事件实际上被触发了,并且它们的方面也变得可见。但是成功/错误事件和随后的完成事件之间的时间太短了,您根本无法感知成功和错误事件的出现,甚至不会像屏幕闪烁一样。
现在我的问题是:
- 关于如何使用错误和成功方面,我在概念上是否有什么不明白的地方?
- 有什么方法可以防止完整的刻面立即替换错误和成功的刻面?省略完整的刻面不会产生任何影响。完成 ajax 请求后,根本不会显示任何方面。
- 当成功和错误方面实际上从未可见时,它们有什么意义?
编辑:与此同时,问题已得到解决。这是 primefaces 中的一个错误,将在 6.3 版中修复。这是我创建的相应错误报告:https://github.com/primefaces/primefaces/issues/3625。 我还提供了一个解决问题的拉取请求:https://github.com/primefaces/primefaces/pull/3653。对于任何对解决方法感兴趣的人,您可以自己构建 primefaces 并对其应用以下更改:https://github.com/primefaces/primefaces/commit/33fa3e55239b5bd974fa88b0f5ce29d02a5c3557。这将解决问题。
感谢 @kukeltje 鼓励我在 primefaces bugtracker 上发布问题。
【问题讨论】:
标签: jsf primefaces