Search code examples
ajaxjsfrichfacestabpanel

JSF / Richfaces Ajax Requests


In a Tabpanel each Tab's content is fetched from the server by ajax (using the switchType="ajax" attribute) so that all the content does not have to be fetched at the start. After the content is fetched once, though, it should not be fetched from the server again since the content is already present on the page. The content of the Tab should should just be toggled between display:none and display:block as it would be if the switchTypewere set to client

Is there a way to tell JSF/Richfaces not to send the second ajax request if the content has already been fetched and instead just toggle the visibility?

Asked onther way: is it possible to use the switchType="ajax" on the first request and switchType="client" for the following requests?


Solution

  • You'll have to keep a flag for every tab that decides the switchType, e.g.

    <rich:tab header="tab1" action="#{bean.switchTab(0)}" 
        switchType="#{bean.tabList[0] ? 'client' : 'ajax'}">Content</rich:tab>
    

    You'll start with switchType="ajax" but when you load the tab it will be rerendered with switchType="client".