JSF'total'变量类似于c:在JSTL中设置

时间:2009-10-13 11:39:33

标签: java jsf jstl

我不喜欢JSF,但我需要用它来解决这个问题,我正在使用“纯粹的”JSF。 所以这是我需要的,但我不知道如何用JSF来实现它:

<c:set var="total" value="0"></c:set>

<c:forEach var="item" items="${cart}">
    <tr>
        <td>${item.product.name}</td>
        <td>${item.product.price}</td>
        <td>${item.quantity}</td>
        <td>${item.product.price * item.quantity}</td>
    </tr>
    <c:set var="total" value="${total + item.product.price * item.quantity}"></c:set>
</c:forEach>

现在我可以用简单的$ {total}显示总价值。

我的JSF表看起来像这样:

    <h:dataTable var="item" value="#{mbProducts.cart_items}" binding="#{mbProducts.tableComponent}" border="1">

        <h:column>
            <f:facet name="header">
                <h:outputText value="NAME" />
            </f:facet>

            <h:outputText value="#{item.product.name}" />
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="PRICE" />
            </f:facet>

            <h:outputText value="#{item.product.price}" />
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="NUM" />
            </f:facet>

            <h:outputText value="#{item.quantity}" />
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="TOTAL PRICE" />
            </f:facet>

            <h:outputText value="#{item.product.price * item.quantity}"/>
        </h:column>

    </h:dataTable>

但我不知道如何设置在每次迭代中都会增加的总变量? 怎么解决这个问题?!

3 个答案:

答案 0 :(得分:2)

为什么不在支持bean中进行计算,只使用jsf进行检索?

为了回答你的问题,我不知道只使用JSF库设置变量的可能性。

答案 1 :(得分:2)

有趣的详细信息 - <c:set>标记位于JSF 2.0

答案 2 :(得分:0)

您正在同时混合树构建时间标记与rendertime标记。 用ui替换c:forEach:重复看这里c:foreach vs ui:repeat