Im not sure if this behaviour is normal or not.
Im hoping that my panel
will be rendered only after clicking on a button that triggers an ajax
put your panel with conditional rendering inside another and update it. Like this:
<p:outputPanel id="toUpdate">
<p:panel id="myPanel" rendered="#{myBean.flag}">
</p:panel>
<p:outputPanel>
<p:commandButton update="toUpdate"/>
This is a known issue. The element can't be updated if it doesn't exist in DOM.