例如,
<p:dataTable var="price" value="#{testManagedBean.price}" rowIndexVar="rowIndex">
<p:column headerText="Index">
<h:outputText value="#{rowIndex+1}"/>
</p:column>
<p:column headerText="Price" style="text-align: right;">
<h:outputText value="#{price}"/>
<f:facet name="footer">
<c:set var="total" value="${total+price}"/>
<h:outputText value="#{total}"/>
</f:facet>
</p:column>
</p:dataTable>
托管bean:
@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable
{
private List<BigDecimal>price;
private static final long serialVersionUID = 1L;
@PostConstruct
public void init()
{
price=new ArrayList<>();
price.add(new BigDecimal(50));
price.add(new BigDecimal(100));
price.add(new BigDecimal(150));
price.add(new BigDecimal(200));
price.add(new BigDecimal(250));
price.add(new BigDecimal(300));
}
public List<BigDecimal> getPrice() {
return price;
}
}
项目列表的总数将显示在页脚上。
这是否可以使用JSTL进行此求和或者没有在辅助bean本身中进行此求和的方法?
目前,JSTL <c:set>
的操作会在相关列的页脚上产生0
。
答案 0 :(得分:1)
这样的事情对我有用:
<c:set var="total" value="0"/>
<c:forEach items="#{testManagedBean.price}" var="t">
<c:set var="total" value="#{total + t}"/>
</c:forEach>
<h:outputText value="#{total}"/>
我不会拒绝它可以优化的想法: - )