数据表的JSF'total'变量

时间:2011-08-14 14:25:32

标签: java jsf jstl

我已阅读上一篇文章:JSF 'total' variable something like c:set in JSTL。虽然答案表明总数应该来自支持bean,但我确实需要在facelet中进行。对于我的情况,我想显示银行存折类型数据表,每行包含日期,描述,金额和运行总计。数据来自JPA get类型List< Entity>。如果我在支持bean中完成了总计,我需要迭代List,创建一个仅用于running-total属性的数据模型。这确实是低效的。

我试过了:

<c:set var="sum" value="0.0" scope="view" />
    <table>
<ui:repeat value="#{xxxBean.items}" var="item">
    <tr>
        <td><h:outputText value="#{item.date1}" /></td>
        <td><h:outputText value="#{item.desc}" /></td>
        <td><h:outputText value="#{item.amount}" /></td>
    <c:set var="sum" value="${sum+item.amount}"/>
        <td><h:outputText value="${sum}" /></td>
    </tr>
</ui:repeat>
    </table>

但它不起作用,$ {sum}每行重置为零。除了制作自定义组件外,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

这仍然可以使用辅助bean中的方法来解决:

public class MyBackingBean {

 private Double runningTotal = 0.0;

 public Double getRunningTotal(Item item) {
   Double result = runningTotal;
   runningTotal += item.getAmount();
   return result;
 }

}

然后在您的视图中,使用此选项显示运行总计:

<td><h:outputText value="#{xxxBean.getRunningTotal(item)}" /></td>

不优雅,但有效。