I am using the p:tabView component inside of which I have multiple p:tab.
One of the p:tab contains a datatable that in turn holds a column with a rowToggler:
<p:column style="width:4%">
<p:rowToggler />
</p:column>
And a separate p:rowExpansion:
<p:rowExpansion>
<p:graphicImage id="thumbnailImage" value="/api/downloadFile/thumb/#{item.revisionId}"/>
</p:rowExpansion>
When I click the row toggler in any of the rows in the rendered datatable I notice that not only do I retrieve the image as desired but each tab within the tabView is also rerendered. This causes multiple unnecessary calls to the server with the associated extra load on the server and it impacts user experience and performance badly – e.g. 4 seconds to wait before row actually expands.
How can I prevent the toggle event from rippling up to cause all tabs to rerender?
I am using Primefaces 4.0-SNAPSHOT.
Looks like the behaviour is due to the way our chosen JSF implementation (mojarra) processes AJAX requests:
http://forum.primefaces.org/viewtopic.php?f=3&t=19101
A number of people have been experiencing poor performance of their apps when running against mojarra and as a result and a JIRA issue was raised:
http://java.net/jira/browse/JAVASERVERFACES-2334
Sadly this was closed with “Resolution: Works as designed”
We are now looking to move to using the MyFaces JSF implementation as it is much more performant as per the JIRA comments: