我只是不明白: 如果我想我的複合材料部件插入孩子,我使用<composite:insertChildren/>
但#{cc.childCount}
總是在這種情況下返回0
。另一方面,如果我不使用<composite:insertChildren/>
我總是得到正確childCount
沒有兒童被渲染。爲什麼會發生?JSF2複合組件:分別是#{cc.childCount}和<composite:insertChildren />是否互斥?
我想在我的組件中執行的所有操作都是在沒有孩子的情況下呈現一些「默認」面板,並且在其他情況下不會渲染它 - 行爲類似於<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>
任何想法/解決方法?
'getFamily()'是不必要的,因爲已經在'UINamingContainer'中實現了。只有當你實現'NamingContainer'接口或者另一個'UIComponent'子類時,你才需要指定你自己。 – BalusC 2015-07-24 22:25:29
我站好了。謝謝。 – 2015-07-25 12:17:14