我有两个嵌套的复合
复合A
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://sig.com/faces"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<composite:insertChildren />
<p:separator />
</composite:implementation>
</ui:composition>
和复合B
(案例#1)
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://sig.com/faces"
xmlns:mycomposites="http://java.sun.com/jsf/composite/mycomposites"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<mycomposites:a>
<composite:insertChildren />
</mycomposites:a>
</composite:implementation>
</ui:composition>
最后我有我的观点或页面
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://sig.com/faces"
xmlns:gt="http://java.sun.com/jsf/composite/template"
xmlns:mycomposites="http://java.sun.com/jsf/composite/mycomposites"
template="/template/template.xhtml">
<ui:define name="body">
<mycomposites:b>
<h:outputText value="test" />
</mycomposites:b>
</ui:define>
</ui:composition>
“test”未呈现。
对于我所看到的,这是因为B中的insertChildren
位于另一个复合insertChildren
(A)中。
如果我在B外移动insertChildren
,那么合成工作就好了:
(CASE#2)
<?xml version="1.0" encoding="ISO-8859-1"?>
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://sig.com/faces"
xmlns:mycomposites="http://java.sun.com/jsf/composite/mycomposites"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
</composite:interface>
<composite:implementation>
<mycomposites:desktop>
<!-- MOVED -->
</mycomposites:desktop>
<composite:insertChildren />
</composite:implementation>
</ui:composition>
但CASE#2对我没什么用。我需要它像CASE#2
任何帮助?
谢谢
答案 0 :(得分:1)
我遇到了和你一样的问题。
我有一个 A.xhtml
组件<composite:implementation>
<primefaces:datatable>
<primefaces:column>
<h:outputText value="#{row.identityName}" />
</primefaces:column>
<composite:insertChildren />
</primefaces:datatable>
</composite:implementation>
用于三个文件:
在&#34;身份/ * / search.xhtml&#34;页面我给组件A提供了许多标识属性和子项。 因为这会产生很多重复的代码,所以我试图为两个身份页面制作组件A的子组件。
identity_A.xhtml
<composite:implementation>
<component:A identityAttribute="example">
<primefaces:column>
<h:outputText value="#{row.identityName}" />
</primefaces:column>
<composite:insertChildren />
</component:A>
</composite:implementation>
我注意到,我给identity_A.xhtml的孩子们不再显示在primefaces数据表中。
此问题的解决方案/解决方法是为这两个页面而不是子组件创建模板:
identitySearch.xhtml
...
<component:A identityAttribute="example">
<primefaces:column>
<h:outputText value="#{row.identityName}" />
</primefaces:column>
<ui:insert name="datatableChildren">
</component:A>
...
也许你可以像我一样解决你的问题。
我希望,有一个解决方案,在嵌套复合组件中使用composite:insertChildren
。