我正在我的 JSF 页面中创建一个数据表,它显示每列的页脚以及列页面中的总值。
我正在使用 Richfaces 数据滚动器进行分页。
当我在richfaces datascroller 中单击下一页时,我需要用该页面中的列值总数更新我的页脚,这对我来说现在是个问题
我设法通过以下讨论创建代码来计算页面总数 http://forums.sun.com/thread.jspa?threadID=5254959
当带有数据表的页面加载时,我设法在页脚中正确地看到了列的总数。当我单击 datascroller 中的下一页时,相同的值仍然存在。
例如,当第一页的列总数为 5,第二页为 3 时。
我设法正确显示 5,当我单击下一页时,我需要将其更新为 3,但 5 保持不变。
当我单击 datascroller 中的下一个按钮时,似乎只有数据表正文得到更新。Richfaces 或 JSF 中是否有一种方法可以使页脚在每次点击时都得到更新?或者除了解决我的问题的 Richfaces datascroller 之外还有其他选择吗?
我的 JSF 代码是
<h:dataTable id="summary" binding="#{outboundCall.summaryTable}">
</h:dataTable>
<rich:datascroller reRender="summary" for="summary" style="width:623px;font-family : Verdana;font-weight: bold;">
</rich:datascroller>
我的java代码是
public HtmlDataTable getSummaryTable()
{
summaryTable = new HtmlDataTable();
summaryTable.setRowClasses("datatablecontent");
summaryTable.setColumnClasses("datatablecontent");
summaryTable.setHeaderClass("datatableheader");
summaryTable.setFooterClass("datatablecontent");
summaryTable.setVar("data");
summaryTable.setRows(5);
//summaryTable.setId("summaryTable");
summaryTable.setValueExpression("value", createValueExpression("#{outboundCall.summaryReports}", List.class));
summaryTable.setRendered(getDataTableRendered());
HtmlColumn column1 = getColumnDetails("Dialled Date", "#{data.dialledDate}");
HtmlOutputText footerText1 = new HtmlOutputText();
footerText1.setValue("Total");
column1.setFooter(footerText1);
summaryTable.getChildren().add(column1);
if(getStatus().equalsIgnoreCase("success") || getStatus().equalsIgnoreCase("all"))
{
System.out.println("Before footer calculation");
int subTotalPrice = 0;
for (int i = summaryTable.getFirst();
i < summaryTable.getFirst() + summaryTable.getRows() &&
i < getSummaryReports().size(); i++)
{
SummaryReportsForOutBoundCalls dataItem = getSummaryReports().get(i);
String dataItemPrice = dataItem.getSuccessCount();
subTotalPrice += Integer.parseInt(dataItemPrice);
dataItem.setTotalCallsTotal(Integer.toString(subTotalPrice));
}
setFooterTotalToDisplay(Integer.toString(subTotalPrice));
HtmlColumn column2 = getColumnDetails("Success", "#{data.successCount}");
HtmlOutputText footerText2 = new HtmlOutputText();
footerText2.setValue(subTotalPrice);
column2.setFooter(footerText2);
summaryTable.getChildren().add(column2);
}
return summaryTable;
}
这是我计算页面总数的代码
public List<SummaryReportsForOutBoundCalls> getSummaryReports()
{
int total = 0;
//getSummaryTable();
for (int i = summaryTable.getFirst();
i < summaryTable.getFirst() + summaryTable.getRows() &&
i < summaryReports.size(); i++)
{
SummaryReportsForOutBoundCalls dataItem = summaryReports.get(i);
String dataItemPrice = dataItem.getSuccessCount();
total += Integer.parseInt(dataItemPrice);
dataItem.setTotalCallsTotal(Integer.toString(total));
}
scroller.setOncomplete("setValue('"+total+"')");
scroller.setOnclick("setValue('"+total+"')");
setFooterTotalToDisplay(Integer.toString(total));
footerText2.setValue(total);
return summaryReports;
}
请帮我解决这个问题
提前致谢