Primefaces 4.0:如何防止rowexpansion导致多个组件重新渲染?

时间:2012-11-28 13:50:28

标签: web-applications jsf-2 primefaces

我正在使用p:tabView组件,其中我有多个p:tab。 其中一个p:选项卡包含一个数据表,该数据表又包含一个带有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。

1 个答案:

答案 0 :(得分: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评论,它的性能更高:

  

“出于好奇,我用豆子测试了附页。

     

Mojarra ajax结果平均为1000ms,MyFaces ajax结果平均   50ms所以差异很大。差异比率也适用于非ajax   请求。“