我的设置是 Eclipse Oxygen、JSF 2.2、JBoss 7.0(Mojarra JSF 实现)和 Primefaces 6.0。我已将 Primefaces 数据表包装在 JSF 复合组件 (my:dataTable) 中:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" xmlns:composite="http://xmlns.jcp.org/jsf/composite"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<composite:interface>
<composite:attribute name="value" required="true" type="java.lang.Object" />
<composite:attribute name="var" required="true" type="java.lang.String" targets="dataTable"/>
</composite:interface>
<composite:implementation>
<div class="ui-g">
<div class="ui-g-12">
<p:dataTable id="dataTable" value="#{cc.attrs.value}" sortMode="multiple"
paginator="true" rows="10"
rowsPerPageTemplate="10, 20, 50, 100" currentPageReportTemplate="Ergebnisse {startRecord} - {endRecord} von {totalRecords}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
<c:set target="#{component}" property="var" value="#{cc.attrs.var}"/>
<composite:insertChildren/>
</p:dataTable>
</div>
</div>
</composite:implementation>
Primefaces 列作为自定义组件(my:column)实现:
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:p="http://primefaces.org/ui"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough" >
<p:column headerText="#{headerText}" sortable="#{sortable}">
<ui:insert />
</p:column>
</ui:composition>
并且组件在使用页面中被调用:
<my:dataTable id="datenTabelleID" value="#{showcaseDatenTabelleBean.quellWerteListe}" var="laufvar">
<my:column headerText="ID">
<h:outputText value="#{laufvar.id}" />
</my:column>
<my:column headerText="Name">
<h:outputText value="#{laufvar.name}" />
</my:column>
</my:dataTable>
除了迭代器变量的 IDE(在我的情况下为 Eclipse)代码辅助之外,一切都按预期工作。对于声明为 var (laufvar) 的属性,我没有代码完成。
提前致谢。