Я просто не понимаю: если я хочу, чтобы мой составной компонент вставлял дочерние элементы, я использую <composite:insertChildren/>
, но #{cc.childCount}
всегда возвращает 0
в этом случае.С другой стороны, если я не использую <composite:insertChildren/>
, я всегда получаю правильное значение childCount
без отображения детей.Почему это происходит?
Все, что я хочу сделать в своем компоненте, - это отобразить некоторую панель «по умолчанию», если нет дочерних элементов, и не отображать ее в другом случае - поведение, подобное <ui:insert name="param_name">default value</ui:insert>
.Поэтому мне нужны и insertChildren, и childCount, которые, похоже, не работают вместе.
Вот код:
<my:test>
<h:outputText value="child1" rendered="#{some.trueValue}"/>
<h:outputText value="child2" rendered="#{some.trueValue}"/>
<my:test>
Если я использую реализацию ниже, я получу 2
отрендерено как ожидалось
<composite:implementation>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
Когда используется insertChildren
, яполучить обоих детей и 0
в конце:
<composite:implementation>
<composite:insertChildren/>
<h:outputText value="#{cc.childCount}"/>
</composite:implementation>
В то время как моя цель:
<composite:implementation>
<composite:insertChildren/>
<h:panelGroup rendered="#{cc.childCount == 0}">
some default data
</h:panelGroup>
</composite:implementation>
Есть идеи / обходные пути?