There is a known issue with the rendered attribute in Primefaces -- the element can't be updated if it doesn't exist in DOM.
Thus, there could be problem to render it with ajax.
eg,
<h:panelGroup id="pg" rendered="#{testBean.flag}">
<h:outputLabel value="this is a panel group" />
</h:panelGroup>
above sample can't be render with ajax.
There are 2 workarounds to resolve the above situation.
option 1: wrap a outer panel group, and render the outer panel group with ajax.
eg, render the outerPG with ajax instead of pg.
<h:panelGroup id="outerPG">
<h:panelGroup id="pg" rendered="#{testBean.flag}">
<h:outputLabel value="this is a panel group" />
</h:panelGroup>
</h:panelGroup>
option 2: declare the rendered condition with <c:if />
eg,
<h:panelGroup id="pg">
<c:if test="#{testBean.flag}">
<h:outputLabel value="this is a panel group" />
</c:if>
</h:panelGroup>nnn
option 2 would be better alternative, because option 2 can even reduce the JSF component tree size.
Because all JSF components within <c:if /> will be removed from the component tree when the <c:if /> test result is false.
Done!!
No comments:
Post a Comment