JSF 'total' variable something like c:set in JSTL

19,842

Solution 1

why dont you just do the calculation in the backing bean and just use jsf to retreive it?

And to answer your question, i don't know of a possiblity to set variables using just JSF libraries.

Solution 2

Interesting detail - <c:set> tag will available be in JSF 2.0.

Share:
19,842
Splendid
Author by

Splendid

Updated on June 04, 2022

Comments

  • Splendid
    Splendid almost 2 years

    I don't like JSF but I need to solve this problem with it, I am working in "pure" JSF. So this is what I baisicly need but I don't know how to accomplish it with 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>
    

    Now I can display total value with simple ${total} as u know.

    My JSF table looks like this:

        <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>
    

    But I don't know how to set total variable which will be increased in each iteration? How to solve this?!