Я создаю таблицу данных на своей странице JSF, которая показывает нижний колонтитул для каждого столбца с общим количеством значений на странице столбца.
Я использую прокрутку данных Richfaces для пейджинга.
Когда я нажимаю следующую страницу в прокрутке данных richfaces, мне нужно обновить нижний колонтитул, указав общее количество значений столбца на этой странице, что теперь для меня проблема.
Мне удалось создать код для расчета общего количества страниц, следуя этому обсуждению http://forums.sun.com/thread.jspa?threadID=5254959
Когда страница с данными загружается, мне удалось правильно увидеть общее количество столбцов в нижнем колонтитуле. Когда я нажимаю следующую страницу в прокрутке данных, остается то же значение.
Например, когда общее количество столбцов на первой странице равно 5, а на второй странице – 3.
Мне удалось показать 5 правильно, когда я нажимаю следующую страницу, мне нужно, чтобы она обновилась до 3, но 5 остается неизменной.
Похоже, что только тело с данными обновляется, когда я нажимаю следующую кнопку в прокрутке данных. Есть ли способ в Richfaces или JSF, чтобы нижний колонтитул обновлялся при каждом клике? Или есть какая-то другая альтернатива, кроме прокрутки данных Richfaces, которая решает мою проблему?
Мой код 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;
}
Пожалуйста, помогите мне решить это
заранее спасибо