3

8列のJSFデータテーブルがあります。最後の 4 列は数値列です。私のデータテーブルが20行の結果をもたらすとしましょう。最後の 4 列のフィールドのみを含み、20 行の対応する値の合計を含む最後の行を追加したいと考えています。Faceletsコードで最後の行を追加したい。どうやってやるの ?

4

1 に答える 1

1

このようなテーブルが 1 つある場合は、このフッターファセットを追加できます。

<h:dataTable id="table1" value="#{shoppingCartBean.items}" var="item"
             border="1">
    <f:facet name="header">
        <h:outputText value="Your Shopping Cart" />
    </f:facet>
    <h:column>
        <f:facet name="header">
            <h:outputText value="Item Description" />
        </f:facet>
        <h:outputText value="#{item.description}" />
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="Price" />
        </f:facet>
        <h:outputText value="#{item.price}" />
    </h:column>
    <f:facet name="footer">
        <h:panelGroup style="display:block; text-align:right">
            <h:outputText value="Total 1: #{shoppingCartBean.total1}" />
            <h:outputText value="Total 2: #{shoppingCartBean.total2}" />
            <h:outputText value="Total 3: #{shoppingCartBean.total3}" />
            <h:outputText value="Total 4: #{shoppingCartBean.total4}" />
        </h:panelGroup>
    </f:facet>
</h:dataTable>

次に、バッキング Bean で合計関数をコーディングする必要があります。

@ManagedBean
public class ShoppingCartBean {
    ...
    public int total1() {
        // Do the sum of all elements from first column of table as you wish....

        return result;
    }

    public int total2() {
        // Do the sum of all elements from second column of table as you wish....

        return result;
    }
}

より精巧で再利用可能なソリューションを好む場合は、次のように独自の EL 関数を作成できます。

<f:facet name="footer">
    <h:panelGroup style="display:block; text-align:right">
        <h:outputText value="Total 1: #{func:calculateTotal(shoppingCartBean.items, 4}" />
        <h:outputText value="Total 2: #{func:calculateTotal(shoppingCartBean.items, 5}" />
        <h:outputText value="Total 3: #{func:calculateTotal(shoppingCartBean.items, 6}" />
        <h:outputText value="Total 4: #{func:calculateTotal(shoppingCartBean.items, 7}" />
    </h:panelGroup>
</f:facet>

このソリューションでは、カスタム el 関数の作成方法に関する BalusC の説明を確認できます。

よろしく、

于 2013-04-30T12:50:11.253 に答える