PrimeFaces 3.2上的Ajax调用有时会返回一个残缺的响应

时间:2017-11-20 14:26:22

标签: ajax jsf primefaces spring-webflow

我正在运行一个Web应用程序,其中包括Wildfly 10.1.x服务器上的PrimeFaces 3.2。 整个应用程序使用Spring WebFlow和SubFlows以及继承的组件和诸如此类的东西。 正常行为(我们大部分时间都是),Ajax-Request被发送到Flow,触发一个动作,然后返回应该呈现的部分响应。

有时候,当我点击按钮时,会触发操作,但响应完全瘫痪 - 打开一些标签,但没有一个标签关闭,实际上没有内容。

基本上是这样的:

<partial-response>
  <changes>
    <update id="j_idt77">
      <![CDATA[
        <script type="text/javascript">

当尝试渲染时会导致错误。有时,刷新页面可以解决问题,但大部分时间都没有解决问题。

我无法可靠地重现这种行为,我能做的下一个最好的事情是在支持Java代码中导致NullPointerException,这反过来导致流量损坏,但相应的响应完全有效且没有被破坏所有

服务器日志没有任何错误消息。由于我将此作为错误报告,并且到目前为止无法重现它,我无法发布有关错误的更多详细信息,我已经看到了,所以我知道它发生了,但我不知道如何。

修改 更新的错误消息。 另外,这里有更多信息: 引用的标识j_jdt77用于多次重新加载,重新加载重新加载和不同的浏览器。 id不会在当前呈现的文档中的任何位置引用,也不会在要呈现的文档中引用。 我不知道这是否有帮助,但我当然觉得有趣且重要,可以添加。

编辑2

现在可以收集更多信息: 组件j_idt77是一个组件,不应在局部视图上重新加载。我可以肯定这一点,因为部分重新渲染应该只发生在一个名为adminForm的子表单中,并且在所有成功的调用中,在每个可以想象的点击组合中,所有<partial-response>文档都包含3 - 4个ID为了更新,一个是messages,原因显而易见,最后一个是javax.faces.ViewState,其余的是沉着adminForm:XXX的ID,其中XXX是要更新的元素。

j_idt77是一个应该加载一次的组件,所以我完全不确定它是否相关。我能够在该范围之外触发​​ 组件的重新加载,但是现在ID是不同的,因为我添加了<ui:debug />标记并将PROJECT_STAGE更改为{{ 1}}。我不知道如何正在生成id,如果我的猜测是正确的(常规增量,基本上数字是用值X更新的额外设置)元素WOULD是一个javascript资源。

关于更新:我被告知我们可以查看更新,如果保证来修复此行为,那么基本上,我仍然需要知道这里到底出了什么问题。

0 个答案:

没有答案