'Общая' переменная JSF что-то вроде c: set в JSTL - PullRequest
2 голосов
/ 13 октября 2009

Мне не нравится 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 ]

2 голосов
/ 28 октября 2009

Интересная деталь - тег <c:set> будет доступен в JSF 2.0 .

2 голосов
/ 13 октября 2009

Почему бы вам просто не выполнить расчет в компоненте поддержки и просто использовать jsf для его получения?

И чтобы ответить на ваш вопрос, я не знаю возможности установить переменные, используя только библиотеки JSF.

0 голосов
/ 09 июля 2012

Вы одновременно смешиваете теги времени построения дерева и тегов рендеринга. замените c: forEach на ui: повторите, см. здесь c: foreach против ui: повторите

...