我正在运行一个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资源。
关于更新:我被告知我们可以查看更新,如果保证来修复此行为,那么基本上,我仍然需要知道这里到底出了什么问题。