Переменная JSF для итоговых данных - PullRequest
2 голосов
/ 14 августа 2011

Я прочитал предыдущий пост: Переменная 'JSF' total 'что-то вроде c: set в JSTL .Хотя ответ предполагает, что общее количество должно исходить от поддерживающего бина, мне действительно нужно сделать это в фейслете.В моем случае я хочу отобразить тип данных банковской книги с каждой строкой, состоящей из даты, описания, суммы и промежуточного итога .Данные получены из JPA get типа List .Если я выполнил суммирование в бэк-бине, то мне нужно перебрать List, создать модель данных исключительно для цели свойства итоговой суммы.Это действительно неэффективно.

Я пытался:

<c:set var="sum" value="0.0" scope="view" />
    <table>
<ui:repeat value="#{xxxBean.items}" var="item">
    <tr>
        <td><h:outputText value="#{item.date1}" /></td>
        <td><h:outputText value="#{item.desc}" /></td>
        <td><h:outputText value="#{item.amount}" /></td>
    <c:set var="sum" value="${sum+item.amount}"/>
        <td><h:outputText value="${sum}" /></td>
    </tr>
</ui:repeat>
    </table>

, но это не работает, $ {sum} сбрасывается в ноль для каждой строки.Есть ли другой способ, кроме создания собственного компонента?

1 Ответ

1 голос
/ 14 августа 2011

Это все еще можно решить с помощью метода в компоненте поддержки:

public class MyBackingBean {

 private Double runningTotal = 0.0;

 public Double getRunningTotal(Item item) {
   Double result = runningTotal;
   runningTotal += item.getAmount();
   return result;
 }

}

Затем, по вашему мнению, используйте это для отображения промежуточного итога:

<td><h:outputText value="#{xxxBean.getRunningTotal(item)}" /></td>

Не элегантно, но работает.

...