Проблема в обновлении страницы WIRE TOTE в DASATable DataTable при использовании DataScroller Richfaces
-
25-09-2019 - |
Вопрос
Я создаю DataTable на моей странице JSF, которая показывает нижний колонтитул для каждого столбца с общим количеством значений на странице столбца.
Я использую DataScroller Richfaces для пейджинга.
Когда я нажимаю на следующую страницу в DataScroller DataScroller, мне нужно обновить свой нижний колонтитул с общей ценностями столбцов на этой странице, которая сейчас проблема для меня
Мне удалось создать код, чтобы рассчитать страницу WIRE, следуя этой дискуссииhttp://forums.sun.com/thread.jspa?threadid=5254959.
Когда страница с нагрузками DataTable мне удалось правильно увидеть полную колонку в нижнем колонтитуле. Когда я нажимаю на следующую страницу в DataScroller, одинаковое значение остается.
Например, когда столбец всего первой страницы составляет 5, а вторая страница 3.
Мне удалось правильно показать 5, когда я нажимаю на следующую страницу, мне нужно обновить до 3, но 5 остается без изменений.
Похоже, что только тело DataTable обновляется, когда я нажимаю на следующую кнопку в DataScroller. Есть ли путь в Richfaces или JSF, что делает нижний колонтитул обновлять все клики? Или есть ли другая альтернатива, кроме как DataScroller 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;
}
Пожалуйста, помогите мне решить это
заранее спасибо
Решение
После болезненного поиска в неделю я нашел A4J: jsфункция решает проблему для меня. Есть ли другое решение лучше, чем это? Я хочу знать об этом.