0

我正在使用其中有多个 p:tab 的 p:tabView 组件。其中一个 p:tab 包含一个数据表,该数据表又包含一个带有 rowToggler 的列:

<p:column style="width:4%">
    <p:rowToggler />
</p:column>

还有一个单独的 p:rowExpansion:

<p:rowExpansion>
      <p:graphicImage id="thumbnailImage" value="/api/downloadFile/thumb/#{item.revisionId}"/>
</p:rowExpansion>

当我单击渲染数据表中任何行中的行切换器时,我注意到我不仅可以根据需要检索图像,而且 tabView 中的每个选项卡也会重新渲染。这会导致对服务器的多次不必要的调用以及服务器上相关的额外负载,并且严重影响用户体验和性能 - 例如,在行实际扩展之前等待 4 秒。

如何防止切换事件波动导致所有选项卡重新呈现?

我正在使用 Primefaces 4.0-SNAPSHOT。

4

1 回答 1

0

看起来这种行为是由于我们选择的 JSF 实现 (mojarra) 处理 AJAX 请求的方式:

http://forum.primefaces.org/viewtopic.php?f=3&t=19101

许多人在运行 mojarra 时遇到了应用程序性能不佳的问题,因此引发了 JIRA 问题:

http://java.net/jira/browse/JAVASERVERFACES-2334

可悲的是,这以“解决方案:按设计工作”结束

我们现在正在寻求使用 MyFaces JSF 实现,因为根据 JIRA 的评论,它的性能要高得多:

“只是出于好奇,我用 bean 测试了附加页面。

Mojarra ajax 结果平均为 1000 毫秒,MyFaces ajax 结果平均为 50 毫秒,因此差异很大。差异比率也适用于非 ajax 请求。”

于 2012-12-09T22:20:28.360 回答