Componentes compostos JSF2: # # cc.childCount} e <composite: insertChildren /> são mutuamente exclusivos?
Eu simplesmente não entendo: se eu quero que meu componente composto insira filhos, euusa <composite:insertChildren/>
mas#{cc.childCount}
sempre retorna0
nesse caso. Por outro lado, se eunão us <composite:insertChildren/>
Eu sempre acertochildCount
sem filhos sendo renderizados. Por que isso está acontecendo?
Tudo o que quero fazer no meu componente é renderizar algum painel "padrão" se não houver filhos e não o renderizar em outro caso - comportamento semelhante ao<ui:insert name="param_name">default value</ui:insert>
. Então, eu preciso de insertChildren e childCount que parecem não funcionar juntos.
Aqui está o código:
<my:test>
<h:outputText value="child1" rendered="#{some.trueValue}"/>
<h:outputText value="child2" rendered="#{some.trueValue}"/>
<my:test>
Se eu usar a implementação abaixo, recebo2
processado como esperado
<composite:implementation>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
QuandoinsertChildren
é usado, recebo os dois filhos e0
no fim
<composite:implementation>
<composite:insertChildren/>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
Whereas meu objetivo é:
<composite:implementation>
<composite:insertChildren/>
<h:panelGroup rendered="#{cc.childCount == 0}">
some default data
</h:panelGroup>
</composite:implementation>
Algumas ideias / soluções alternativas?