In JSF2, how to know if composite component has children?
children, composite-component, jsf, jsf-2
Solution
The basic expression you're after is the following:
`#{cc.childCount}` or more elaborately:
`#{component.getCompositeComponentParent(component).childCount}`
E.g. the following composite component:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:cc="http://java.sun.com/jsf/composite"
>
<cc:interface/>
<cc:implementation>
<h:outputText value="Children: #{cc.childCount}" />
</cc:implementation>
</html>
used on the following Facelet:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:test="http://java.sun.com/jsf/composite/test"
>
<h:body>
<test:myCom>
<h:outputText value="first child" />
<h:outputText value="second child" />
</test:myCom>
</h:body>
</html>
will print `Children: 2`.
Thus `#{cc.childCount != 0}` will tell you whether a composite component has children or not.
Problem
I'm writing a composite component, you have a special tag named: ``` <composite:insertChildren /> ``` Which inserts all the component's children there. Is there any way to know whether the component has children? Like a boolean value that could go on a "rendered" attribute.