Search code examples
javajsffacelets

f:event triggered inside a h:panelGroup with rendered=false


I have f:event inside a h:panelGroup component with rendered="false" attribute. I want that the f:event listener should be triggered only when the block is rendered not otherwise. My code as follows :

 <h:panelGroup rendered="false">
      <f:event type="preRenderView" listener="#{listRetriever.retrieveFollowers()}"/>
      <ui:repeat value="#{listRetriever.list}" var="person">
             #{person}<br/>
      </ui:repeat>
 </h:panelGroup>

How do I otherwise implement this correctly ?


Solution

  • There is another event to manage component rendering preRenderComponent:

    <h:panelGroup rendered="false">
        <f:event type="preRenderComponent" listener="#{listRetriever.retrieveFollowers()}"/>
        <ui:repeat value="#{listRetriever.list}" var="person">
               #{person}<br/>
        </ui:repeat>
    </h:panelGroup>
    

    preRenderViewEvent is processed just before the entire view is rendered.

    preRenderComponentEvent is processed during the view rendering, just before the component which includes <f:event> is rendered.