Autocomplete 多重<;cc:insertChildren/>;在同一复合构件中
我正在尝试使用自动完成和数据表的并集来创建一个复合组件。像这样:Autocomplete 多重<;cc:insertChildren/>;在同一复合构件中,autocomplete,jsf-2,datatable,primefaces,composite-component,Autocomplete,Jsf 2,Datatable,Primefaces,Composite Component,我正在尝试使用自动完成和数据表的并集来创建一个复合组件。像这样: <util:myCustomComp ...> <p:column>#{item.code}</p:column> <p:column>#{item.name}</p:column> </util:myCustomComp> #{item.code} #{item.name} 在CC文件中: <p:autoComplete ...&
<util:myCustomComp ...>
<p:column>#{item.code}</p:column>
<p:column>#{item.name}</p:column>
</util:myCustomComp>
#{item.code}
#{item.name}
在CC文件中:
<p:autoComplete ...>
<cc:insertChildren /> <!-- Show columns only in autocomplete -->
</p:autoComplete>
<p:dataTable ...>
<cc:insertChildren />
</p:dataTable>
但第二个不渲染,只渲染第一个和skeep(在自动完成或数据表中)
不幸的是,这是行不通的,并且没有方法以声明方式复制组件。最接近您所能得到的是使用
columns.xhtml
<ui:composition ...>
<p:column>#{item.code}</p:column>
<p:column>#{item.name}</p:column>
</ui:composition>
#{item.code}
#{item.name}
主要观点:
<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)在视图中,每个复合组件只能使用cc:insertChildren一次,否则将引发重复id异常。不幸的是,这是不可能的:-(.谢谢你的帮助。但是每次使用它都要创建一个新文件是非常困难的。现在,我使用dataTable中的列子项和autoComplete中的toString。
<p:autoComplete ...>
<ui:include src="#{cc.attrs.columnsFile}" />
</p:autoComplete>
<p:dataTable ...>
<ui:include src="#{cc.attrs.columnsFile}" />
</p:dataTable>