1

我正在嘗試使用autoComplete和dataTable的聯合來完成一個複合組件。就像這樣:多個<cc:insertChildren />在同一個複合組件中

<util:myCustomComp ...> 
    <p:column>#{item.code}</p:column> 
    <p:column>#{item.name}</p:column> 
</util:myCustomComp> 

而且在CC文件:

<p:autoComplete ...> 
    <cc:insertChildren /> <!-- Show columns only in autocomplete --> 
</p:autoComplete> 
<p:dataTable ...> 
    <cc:insertChildren /> 
</p:dataTable> 

但呈現的第二心不是,只渲染第一和skeep(在自動完成或DataTable中)。

<p:autoComplete ... /> 
<p:dataTable ...> 
    <cc:insertChildren /> <!-- Show columns in dataTable --> 
</p:dataTable> 

回答

1

對於每個複合組件,您只能在視圖中使用cc:insertChildren一次,否則會引發重複的id異常。不幸的是,有沒有辦法可以工作:-(。

2

不幸的是,這是行不通的,並且沒有辦法以聲明方式複製組件。最接近的是使用<ui:include>代替。

columns.xhtml

<ui:composition ...> 
    <p:column>#{item.code}</p:column> 
    <p:column>#{item.name}</p:column> 
</ui:composition> 

主視圖:

<util:myCustomComp columnsFile="/columns.xhtml" ... /> 

複合實現:

<p:autoComplete ...> 
    <ui:include src="#{cc.attrs.columnsFile}" /> 
</p:autoComplete> 
<p:dataTable ...> 
    <ui:include src="#{cc.attrs.columnsFile}" /> 
</p:dataTable> 

(聲明:未經測試,這可能會破壞視圖作用域bean如果局部狀態保存被接通)

+0

謝謝你的幫助。但創建一個新的文件,每一次使用這是非常困難的。現在,我使用dataTable中的列子和autoComplete中的toString 。 – rogeriolino

相關問題