我已阅读上一篇文章: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}每行重置为零。除了制作自定义组件外,还有其他方法吗?
答案 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>
不优雅,但有效。