summaryrow上的datatable和0

vwkv1x7d  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(335)

我需要得到两个日期之间每天每小时一组事务的总数,但只能在最后一个日期得到结果。我正在使用Java8和PrimeFaces8.0。这是我的密码:

<p:dataTable id="dtLlamadas1" value="#{llamadaBean.lista1}" var="lista1"         sortBy="#{lista1.fecha}">

    (other primefaces tags)

    <p:summaryRow>
        <p:column colspan="2" style="text-align:right">
            <h:outputText value="Total:" />
        </p:column>
        <p:column>
            <h:outputText value="#{lista1.totalTransacciones}">                                        
            </h:outputText>
        </p:column>
    </p:summaryRow>
</p:dataTable>

lista1是bean中的java列表,它包含表记录(日期、小时、每小时事务数)的Map。
这是结果的一个例子
正如你所见,在其他日子里,总数是0,但最后一个。有人能帮我吗?

6yt4nkrj

6yt4nkrj1#

多亏了@melloware,我解决了我的问题。以下是我在XHTML页面中定义的数据表:

<p:dataTable id="Opcion1" value="#{llamadaBean.lista1}" var="lista1" rows="50"                      
                         sortBy="#{lista1.fecha}">
                <p:column headerText="FECHA">
                    <p:outputLabel value="#{lista1.fecha}"/>
                </p:column>
                <p:column headerText="HORA">
                    <p:outputLabel value="#{lista1.hora}"/>
                </p:column>
                <p:column headerText="TRANSACCIONES">
                    <p:outputLabel value="#{lista1.numTransacciones}"/>
                </p:column>
                <p:summaryRow>
                    <p:column colspan="2" style="text-align:right">
                        <h:outputText value="Total:" />
                    </p:column>
                    <p:column>
                        <h:outputText value="#{lista1.totalTransacciones}">                                        
                        </h:outputText>
                    </p:column>
                </p:summaryRow>
            </p:dataTable>

这意味着它将按日期合计所有事务。同时,我的bean定义如下:

while (rs.next()) {
                numFila++;

                Llamada llamadaOp1 = new Llamada();

                llamadaOp1.setFecha(rs.getString("FECHA"));
                llamadaOp1.setHora(rs.getString("HORA"));
                llamadaOp1.setNumTransacciones(rs.getInt("TRANSACCIONES"));

                cont += rs.getInt("TRANSACCIONES");

                //get the total by day

                if(numFila>=24 || rs.isLast()){
                    llamadaOp1.setTotalTransacciones(cont);
                    cont=0;
                    numFila=0;
                }

                listaOp1.add(llamadaOp1);
            }

问题出在llamadaop1.setTotalTransacions(cont)中,因为当hora还在23:00时,它比较numfila>=23,因此llamadaop1.setTotalTransacions(cont)将在00:00时设置为0。我是primefaces的新手,所以我相信虫子就在那里。

相关问题