Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Autocomplete 多重<;cc:insertChildren/>;在同一复合构件中_Autocomplete_Jsf 2_Datatable_Primefaces_Composite Component - Fatal编程技术网

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>