Как реализовать вложенные подтаблицы с помощью PrimeFaces datatable? - PullRequest
0 голосов
/ 30 августа 2018

enter image description here

Как видно из приведенной выше таблицы, сделанной на листе Excel, я хочу создать таблицу с использованием данных Primefaces. Строки таблицы должны быть сгруппированы на основе двух наборов столбцов (первые 2 столбца и первые 7 столбцов), представленных красными и желтыми полями, также мне нужно добавить итоговую строку, которая будет вычислять сумму значений внутри "Invia Totale" столбец для внутренней группы и внешней группы, представленный синими прямоугольниками. Я уже сгруппировал записи БД в соответствии с логикой данных таблицы.

Мой xhtml файл:

<p:dataTable id="tbltotaliFatture" widgetVar="tbltotaliFatture"
value="#{bbean.outGroupList}" var="outerGroup"
emptyMessage="#{global['msgNessunRisultatoTrovato']}"
scrollRows="10" scrollable="true" scrollHeight="400"
scrollWidth="100%">
    <p:columnGroup type="header">
        <p:row>
            <p:column style="width:250px"
                headerText="#{quadraturaFattureEura['label_centrale']}" />
            <p:column style="width:130px"
                headerText="#{quadraturaFattureEura['label_file']}" />
            <p:column style="width:110px"
                headerText="#{quadraturaFattureEura['label_compagnia']}" />
            <p:column style="width:110px"
                headerText="#{quadraturaFattureEura['label_anno_rif']}" />
            <p:column style="width:110px"
                headerText="#{quadraturaFattureEura['label_mese_rif']}" />
            <p:column style="width:110px"
                headerText="#{quadraturaFattureEura['lbl_anno_competenza']}" />
            <p:column style="width:110px"
                headerText="#{quadraturaFattureEura['lbl_tipo_costo']}" />
            <p:column style="width:130px"
                headerText="#{quadraturaFattureEura['lbl_modalita_pagamento']}" />
            <p:column style="width:150px"
                headerText="#{quadraturaFattureEura['lbl_totale_inviato']}" />
            <p:column style="width:150px"
                headerText="#{quadraturaFattureEura['lbl_totale_in_errore']}" />
        </p:row>
    </p:columnGroup>
    <p:subTable var="innerGroup" value="#{outerGroup.innerGroupList}">
        <p:subTable var="row" value="#{innerGroup.mappedServiceMBeanList}">
            <p:column>
                <h:outputText id="dscCentrale"
                    styleClass="value-text text-right"
                    value="#{row.codCentrale}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="dscFile"
                    styleClass="value-text text-right"
                    value="#{row.codFile}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="codMulticompagnia"
                    styleClass="value-text text-right"
                    value="#{row.codMultiCompag}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="annoRiferimento"
                    styleClass="value-text text-right"
                    value="#{row.annoRiferi}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="meseRiferimento"
                    styleClass="value-text text-right"
                    value="#{row.meseRiferi}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="annoCompetenza"
                    styleClass="value-text text-right"
                    value="#{row.annoCompetenza}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="tipoCosto"
                    styleClass="value-text text-right"
                    value="#{row.tipoCosto}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="modalitaPagamento"
                    styleClass="value-text text-right"
                    value="#{row.modalitaPagamento}">
                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="totaleInviato"
                    styleClass="value-text text-right"
                    value="#{row.totaleInviato}">

                </h:outputText>
            </p:column>
            <p:column>
                <h:outputText id="totaleInErrore"
                    styleClass="value-text text-right"
                    value="#{row.totaleInErrore}">

                </h:outputText>
            </p:column>
            <p:columnGroup>
                <p:column style="background-color: #F0F0F0;" colspan="8" />
                <p:column>
                    <h:outputText id="innerTotal"
                        styleClass="value-text text-right"
                        value="#{innerGroup.innerTotal}">
                    </h:outputText>
                </p:column>
                <p:column style="background-color: #F0F0F0;" />
            </p:columnGroup>
            <p:columnGroup>
                <p:row>
                    <p:column style="background-color: #F0F0F0;" colspan="9" />
                    <p:column style="background-color: #F0F0F0;">
                        <h:outputText styleClass="value-text text-bold text-right"
                            value="#{outerGroup.outerTotal}">
                        </h:outputText>
                    </p:column>
                </p:row>
            </p:columnGroup>
        </p:subTable>
    </p:subTable></p:dataTable>

Классы Java Bean: - QuadraturaFattureEuraOuterGroup.java

public class QuadraturaFattureEuraOuterGroup {

private static final long serialVersionUID = 947989833069960727L;
private String outerTotal;

private List<QuadraturaFattureEuraInnerGroup> innerGroupList;
}

QuadraturaFattureEuraInnerGroup.java

public class QuadraturaFattureEuraInnerGroup implements Serializable{

private static final long serialVersionUID = 7411230855825585398L;

private String innerTotal;

private List<QuadraturaFattureEuraMBean> mappedServiceMBeanList;

}

QuadraturaFattureEuraMBean.java

 public class QuadraturaFattureEuraMBean {
// list of properties being fetched from data-base and to be rendered as UI table rows

}

Мои данные таблицы не отображаются, и я также не получаю никаких ошибок. Пожалуйста, помогите мне в этом, поскольку я не нашел никакого решения с такими сценариями, как у меня.

...