2009-10-13 38 views
2

我不喜欢JSF,但我需要解决这个问题,我在“纯”JSF工作。 所以这是我baisicly需要,但我不知道如何与JSF完成它:JSF的'总'变量类似c:在JSTL中设置

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

现在我可以显示简单的$ {}总总价值为u知道。

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

我没有找到JSF解决方案,这是迟缓的,我修改后端bean,所以问题有点解决,但我仍然有兴趣听到这是可能的只用JSF解决 – Splendid 2009-10-13 14:13:10

回答

2

为什么不只是在backing bean中进行计算,只是用jsf来检索呢?

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

+0

我想避免这种情况,因为我正在学习JSF,在backing bean中实现它不是问题,但如果可能,我想在JSF中实现它? – Splendid 2009-10-13 11:50:44

+0

因为您正在学习JSF,所以您必须定义在演示文稿方面要做什么以及在服务器端执行什么操作。总数通常是您可以在服务器端计算的值,并且仅在JSF页面上使用getter。 – romaintaz 2009-10-13 12:16:38

+0

只是为了您的知识,您可以在JSF中使用JSTL组件... – romaintaz 2009-10-13 12:17:25

0

您正在同时混合树木构建时间标签和rendertime标签。 取代c:for each与ui:重复看到这里c:foreach vs ui:repeat