我不喜欢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>
但我不知道如何设置在每次迭代中都会增加的总变量? 怎么解决这个问题?!
答案 0 :(得分:2)
为什么不在支持bean中进行计算,只使用jsf进行检索?
为了回答你的问题,我不知道只使用JSF库设置变量的可能性。
答案 1 :(得分:2)
有趣的详细信息 - <c:set>
标记位于JSF 2.0。
答案 2 :(得分:0)
您正在同时混合树构建时间标记与rendertime标记。 用ui替换c:forEach:重复看这里c:foreach vs ui:repeat