在我的视图层中,我使用具有 9 列的 Primefaces 数据表,其中最后一个具有浮点值(列名 = 'Valor')。
有一个名为“prefDep”的整数列,它的值有一个过滤器(顺便说一下,foreignKey 值):
<!-- column name omitted -->
<p:column sortBy="#{item.prefDep}" filterBy="#{item.prefDep}">
<h:outputText value="#{item.prefDep}"/>
</p:column>
Datatable 的最后一行有一个固定的GrandTotal,它是提到的“Valor”列的总和:
<p:columnGroup type="footer">
<p:row>
<p:column colspan="8" footerText="Grand Total:" />
<p:column footerText="#{upbController.totalLosses}" />
</p:row>
</p:columnGroup>
控制器类中获取总和的方法:
public int getTotalLosses() {
int total = 0;
for(Upb id : getItems()) {
total += id.getValor();
}
return total;
}
我想要什么:当我过滤数据表时,我只想显示过滤后的值部分的相应 GrandTotal,而不是“固定”总和。
我该怎么做?
提前致谢。
--
节后:
在我的 AbstractController 我有:
private List<T> filteredUpb;
//...
public List<T> getFilteredUpb() {
if (filteredUpb == null) {
filteredUpb = this.ejbFacade.findAll();
}
return filteredUpb;
}
在我的 UpbController (managedBean) 中:
private List<Upb> filteredUpb = null;
//...
public int getPerdasTotal() {
int total = 0;
for (Upb id : getFilteredUpb()) {
total += id.getVlOco();
}
return total;
}
在jsf中:
<p:column>
<f:facet name="footer">
<h:outputText value="#{upbController.perdasTotal}" />
</f:facet>
</p:column>