Wie ajax aktualisieren eines Elements in der Fußzeile von PrimeFaces dataTable?

Dies ist ein visual von der Tabelle habe ich:

+---------+------------+-------------------+ 
| Header1 | Header2 | Header3 | 
+---------+------------+-------------------+ 
Zeile | A | Input A | Calc ' ed Ausgang A | 
| Reihe B | Input B | Calc ' ed Ausgabe B | 
| usw ... | usw ... | usw.. | 
+---------+------------+-------------------+ 
| Total: Total calc ' ed Ausgang | 
+------------------------------------------+ 

Und der abgespeckte code:

<p:dataTable id="myTable" value="#{myBean.someList}"
    var="currentItem">

    <p:column headerText="Header1">
        <h:outputText value="#{currentItem.name}" />
    </p:column>

    <p:column headerText="Header2">
        <pe:inputNumber value="#{currentItem.inputVal}">
            <p:ajax event="change" listener="#{myBean.changeListener}"
                update="outputVal outputTotal" />
        </pe:inputNumber>
    </p:column>

    <p:column headerText="Header3">
        <h:outputText id="outputVal" value="#{currentItem.outputVal}" />
    </p:column>

    <f:facet name="footer">
        Total:
        <h:outputText id="outputTotal" value="#{myBean.total}" />
    </f:facet>

</p:dataTable>

Den myBean.someList ist ein ArrayList<SomeOtherBean> mit einem String und zwei Integer-zahlen, mit nur Getter und setter. Die myBean.changeListener berechnet die zweite Zahl aus der ersten für die angegebene Zeile, und auch die Summe für alle Zeilen.

So, wenn ich in einen der Eingänge, dann konzentrieren Sie sich, wird der listener aufgerufen und die Berechnung erfolgt, sondern auf dem Bildschirm, wird der Wert in der Dritten Spalte ändert, aber die Summe hartnäckig bleibt null. Ich bin mir ziemlich sicher, das hat etwas zu tun mit PrimeFaces anfügen der Zeile, index um die generierten id ' s für jeden Eingang und Ausgang, aber ich kann nicht herausfinden, wie man die Ausgabe in der Fußzeile (deren erzeugte id ist mainForm:myTable:0:outputTotal).

Nun, ich könnte einfach aktualisieren Sie die übergeordnete Tabelle. Allerdings, wenn die Eingabe, die den Fokus erhält, ist Teil der update-Ziel, der Fokus geht verloren, und ich bin unter äußerst strengen Regeln, die den Zugang, dass diese Tabelle muss werden Tastatur und freundlich (geben Sie eine Zahl, Registerkarte, geben Sie eine Zahl, tab, etc...)

Habe ich versucht:

  • update=":outputTotal" (gab-Ausnahme kann Nicht finden Komponente mit id...)
  • update="myTable:0:outputTota (gleiche Ausnahme)
  • update="myTable:outputTotal" (kein update, insgesamt bleibt null)
  • wickeln Sie den text in eine panelGroup und update (kein update)

(PrimeFaces 3.5.0 mit MyFaces unbekannte version)

InformationsquelleAutor cobaltduck | 2014-06-27
Schreibe einen Kommentar