1

我的设置是 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) 的属性,我没有代码完成。

提前致谢。

4

0 回答 0