我有两个嵌套的复合
复合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>没有呈现“测试”。我看到这是因为B中的insertChildren位于另一个复合insertChildren (A)中。
如果我将B中的insertChildren移到复合之外,那么工作得很好,如下所示:
(个案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>但第二个案子对我没有多大帮助。我需要它就像2号案件一样
有什么帮助吗?
谢谢
发布于 2015-12-23 14:10:09
我和你一样有同样的问题。
我有一个组件A.xhtml
<composite:implementation>
<primefaces:datatable>
<primefaces:column>
<h:outputText value="#{row.identityName}" />
</primefaces:column>
<composite:insertChildren />
</primefaces:datatable>
</composite:implementation>它在三个文件中使用:
在" identity /*/search.xhtml“页面中,我向组件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**in嵌套的组合组件。
https://stackoverflow.com/questions/28568140
复制相似问题