gpt4 book ai didi

java - 在数据表中使用过滤器进行动态计算

转载 作者:行者123 更新时间:2023-11-29 05:31:31 25 4
gpt4 key购买 nike

我想在过滤和/或分页 Primefaces 数据表时动态更新数据集值的总和。

下面的 jQuery 示例完全显示了我想要的行为:http://datatables.net/examples/advanced_init/footer_callback.html

请参阅下面我针对此问题的主要代码:

jsf

<p:columnGroup type="footer">
<p:row>
<p:column colspan="6" footerText="Grand Total:" style="text-align:right"/>
<p:column colspan="7">
<f:facet name="footer">
<h:outputText value="#{purchaseOrderController.soma}">
<f:convertNumber pattern="###,###" locale="pl_PL"/>
</h:outputText>
</f:facet>
</p:column>
</p:row>
</p:columnGroup>

体细胞的方法:

private float soma;

public float getSoma() {
for (PurchaseOrder p : getItems()) {
soma += p.getShippingCost().floatValue();
}
return soma;
}

有人可以帮助我吗?

提前致谢。

更新代码

bean :

@Named(value = "purchaseOrderController")
@ViewScoped
public class PurchaseOrderController extends AbstractController<PurchaseOrder> implements Serializable {

private float soma = 0;
private float somaFiltered = 0;
private List<PurchaseOrder> filteredPurchaseOrder;

public List<PurchaseOrder> getFilteredPurchaseOrder() {
return filteredPurchaseOrder;
}

public void setFilteredPurchaseOrder(List<PurchaseOrder> filteredPurchaseOrder) {
this.filteredPurchaseOrder = filteredPurchaseOrder;
}

//return the sum for the FILTERED list - using this method, get a NullPointerException (the filtered list is null)
public float getSomaFiltered() {
for (PurchaseOrder p : filteredPurchaseOrder) {
somaFiltered += p.getQuantity() * p.getShippingCost().floatValue();
}
return somaFiltered;
}

//return the sum for the ENTIRE list - using this method it's ok
public float getSoma() {
for (PurchaseOrder p : getItems()) {
soma += p.getQuantity() * p.getShippingCost().floatValue();
}
return soma;
}

@Inject
private PurchaseOrderFacade ejbFacade;

public PurchaseOrderController() {
super(PurchaseOrder.class);
}

}

jsf(省略了一些列):

<h:form id="PurchaseOrderListForm">
<p:panel header="#{appBundle.ListPurchaseOrderTitle}">
<p:dataTable id="datalist" var="item" value="#{purchaseOrderController.items}"
filteredValue="#{purchaseOrderController.filteredPurchaseOrder}"
selectionMode="single" selection="#{purchaseOrderController.selected}"
rowKey="#{item.orderNum}"
paginator="true"
rows="10"
rowsPerPageTemplate="10,20,30"
>

<p:ajax event="rowSelect" update="createButton viewButton editButton deleteButton"/>
<p:ajax event="rowUnselect" update="createButton viewButton editButton deleteButton"/>
<p:ajax event="filter" listener="#{purchaseOrderController.filteredPurchaseOrder}" update="partialSoma" />

<p:column sortBy="#{item.quantity}" filterBy="#{item.quantity}">
<f:facet name="header">
<h:outputText value="#{appBundle.ListPurchaseOrderTitle_quantity}"/>
</f:facet>
<h:outputText value="#{item.quantity}"/>
</p:column>
<p:column sortBy="#{item.shippingCost}" filterBy="#{item.shippingCost}">
<f:facet name="header">
<h:outputText value="#{appBundle.ListPurchaseOrderTitle_shippingCost}"/>
</f:facet>
<h:outputText value="#{item.shippingCost}"/>
</p:column>
<p:columnGroup type="footer">
<p:row>
<p:column colspan="6" footerText="Grand Total:" style="text-align:right"/>
<p:column colspan="7">
<f:facet name="footer">
<h:outputText id="partialSoma" value="#{purchaseOrderController.somaFiltered}">
</h:outputText>
</f:facet>
</p:column>
</p:row>
</p:columnGroup>
</p:dataTable>
</p:panel>
</h:form>

最佳答案

抱歉我迟到了,但实际上我没有太多时间工作。我昨天下午花时间构建了一个小的工作示例。事实上,我在使用 AJAX 更新页脚时遇到了一些问题(cfr:http://forum.primefaces.org/viewtopic.php?f=3&t=15658)但它正在使用 <p:remoteCommand />解决方法。

您可以找到 Eclipse 示例项目 here , 在 JBoss 7.1.1 上运行,带有 JSF Mojarra 2.2.0m12 和 JDK 1.7

关于java - 在数据表中使用过滤器进行动态计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20935606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com