【问题标题】:How can I display the reason for <a4j:status> error?如何显示 <a4j:status> 错误的原因?
【发布时间】:2016-05-09 15:09:34
【问题描述】:

我目前正在使用 JSF2 和 RichFaces v4.5.12.Final 在我们的 Web 应用程序中调试一个恼人的 AJAX 错误,我需要进一步了解 ajax 更新失败的原因。

我们生成包含多个元素的相当复杂的表单,在其中一些表单上,以下代码 sn-p 无法重新渲染并设置为错误。

<h:selectBooleanCheckbox value="#{myBean.value}">
    <a4j:ajax event="valueChange" execute="@form" render="@form,messages" status="minimal" />
</h:selectBooleanCheckbox>

使用以下代码显示 AJAX 状态:

<a4j:status name="minimal" onstart="$('body').css('cursor', 'progress');" onstop="$('body').css('cursor', 'default');">
    <f:facet name="start">
        <h:graphicImage name="/3rd-Party/Fugue-Icons/hourglass.png"  styleClass="middle" />
    </f:facet>
    <f:facet name="stop"></f:facet>
    <f:facet name="error">
        <h:graphicImage name="/3rd-Party/Fugue-Icons/exclamation-red.png" styleClass="middle" />
    </f:facet>
</a4j:status>

有什么方法可以显示渲染失败的原因吗?我可以访问任何包含某种错误消息的变量吗?

调试显示执行已执行并且不会导致任何服务器端错误。该错误发生在 AJAX 无法重新加载页面内容的客户端。如果我们使用render="@all" 或其他任何东西都没有关系......我们的某些页面上会出现错误。其他&lt;a4j:ajax&gt;相同的可以正常工作。

【问题讨论】:

  • &lt;a4j:ajax ... render="@this" /&gt; 工作...但没有更多的范围。
  • 发现&lt;a4j:ajax ... render="@parent" /&gt; 可以工作...但这还不够,因为同一页面上的其他元素需要渲染。

标签: ajax jsf-2 richfaces


【解决方案1】:

当服务器响应出现问题时触发错误处理程序。 RichFaces 有<a4j:log> 专门用于调试,它至少会告诉你这是什么错误。

【讨论】:

  • 谢谢...但是日志看起来很奇怪...以info [10:16:44.299]: Received 'begin' event from &lt;select id=pageCreator:cmbx_186053852_field ...&gt;info [10:16:44.980]: Received 'beforedomupdate' event from &lt;select id=pageCreator:cmbx_186053852_field ...&gt; 开头,然后是info [10:16:44.980]: Server returned responseText: &lt;?xml ... 的内容,最后是warn [10:16:44.981]: richfaces.queue: ajax submit error: An empty response was received from the server. Check server error logs.,这显然不是真的。
  • 看起来这种反应是出乎意料的......其他有效的元素显示不同的日志。
  • 啊!通过格式化该 XML 响应,我发现该响应似乎格式不正确。看起来 RichFaces 无法解析它。它包括一些可能被破坏的内联 javascript 代码。我会尝试隔离它。
  • RichFaces 不解析响应,JSF 会。尝试调试 jsf.js,这就是消息的来源(“一个空响应......”)。
  • 再次感谢...&lt;a4j:log&gt; 帮助了我。我们在浏览器悄悄忽略的响应中破坏了标签......但是ajax javascript因此而失败。我们已经修复了该代码,现在 ajax 渲染可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 2021-09-11
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2021-08-14
  • 2016-04-26
相关资源
最近更新 更多