使用RichFaces datascroller时,在JSF datatable中更新页面总计时出现问题
我在我的JSF页面中创建了一个datatable,它显示了每一列的页脚,以及该列页面中的总值 我正在使用Richfaces datascroller进行分页 当我在richfaces datascroller中单击下一页时,我需要用该页中的列值总数更新我的页脚,这现在对我来说是个问题 通过以下讨论,我成功地创建了计算页面总计的代码 当加载带有datatable的页面时,我设法在页脚中正确地看到了列的总数。当我在datascroller中单击“下一页”时,仍保留相同的值。使用RichFaces datascroller时,在JSF datatable中更新页面总计时出现问题,jsf,datatable,richfaces,datascroller,Jsf,Datatable,Richfaces,Datascroller,我在我的JSF页面中创建了一个datatable,它显示了每一列的页脚,以及该列页面中的总值 我正在使用Richfaces datascroller进行分页 当我在richfaces datascroller中单击下一页时,我需要用该页中的列值总数更新我的页脚,这现在对我来说是个问题 通过以下讨论,我成功地创建了计算页面总计的代码 当加载带有datatable的页面时,我设法在页脚中正确地看到了列的总数。当我在datascroller中单击“下一页”时,仍保留相同的值。 例如,当第一页的列总数
例如,当第一页的列总数为5,第二页为3时 我设法正确地显示了5,当我单击下一页时,我需要将其更新为3,但5保持不变 当我单击datascroller中的next按钮时,似乎只有datatable主体得到更新。在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;
}
公共HtmlDataTable getSummaryTable()
{
summaryTable=新的HtmlDataTable();
setRowClasses(“datatablecontent”);
setColumnClasses(“datatablecontent”);
setHeaderClass(“datatableheader”);
setFooterClass(“datatablecontent”);
summaryTable.setVar(“数据”);
汇总表。设置行(5);
//setId(“summaryTable”);
setValueExpression(“value”,createValueExpression(“#{outboundCall.summaryReports}”,List.class));
setRendered(getDataTableRendered());
HtmlColumn column1=getColumnDetails(“拨号日期”,“#{data.dialledDate}”);
HtmlOutputText footerText1=新的HtmlOutputText();
footerText1.设置值(“总计”);
column1.setFooter(footerText1);
summaryTable.getChildren().add(第1列);
如果(getStatus().equalsIgnoreCase(“成功”)| | getStatus().equalsIgnoreCase(“全部”))
{
System.out.println(“页脚计算前”);
整型小计价格=0;
for(int i=summaryTable.getFirst();
ipublic 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;
}
public List getSummaryReports()
{
int-total=0;
//getSummaryTable();
for(int i=summaryTable.getFirst();
i
请帮我解决这个问题
提前感谢经过一周痛苦的搜索,我发现a4j:jsFunction为我解决了这个问题。还有比这更好的解决方案吗?我很想知道它。经过一周痛苦的搜索,我发现a4j:jsFunction为我解决了这个问题。还有比这更好的解决方案吗?我很想知道这件事。你能发布jsf代码的完整代码吗?很抱歉迟到了。我不能确切地告诉你。你想要JSP还是Java?asp.net有一个更新页脚的属性。在JSF中有类似的方法吗?你能发布JSF代码的完整代码吗?很抱歉迟到了。我不能确切地告诉你。您想要JSP还是Java?asp.net有一个更新页脚的属性。在JSF中有类似的方法吗?