JavaServer Faces: DataTable darstellen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JavaServer Faces: DataTable darstellen

    Hi!

    Hoffe, hier kennt sich jemand mit JavaServer Faces aus. Ich habe folgendes Problem:

    Mein Projekt umfasst eine input.jsp-Page, eine output.jsp-Page und ein InputBackingBean. Die input.jsp enthält zwei inputText-Elemente und zwei commandButtons. In die Textfelder kann man einen Namen und einen Wert schreiben. Der Name ist ein Name für eine Queue und der Wert ist ein Eintrag in die Queue. Es können so mehrere Werte in eine Queue geschrieben werden. Was ich jetzt möchte ist, die Werte einer zuvor ausgewählten Queue in einer dataTable auf der output.jsp auszugeben. Mein jetziger Stand ist, dass ich mit einem Aufruf einen Iterator einer bestimmten Queue bekomme und seine Werte in einer ArrayList speichere. Ich habe also die Werte, die ich ausgeben möchte als Strings in einer ArrayList vorliegen. Welche Schritte fehlen mir jetzt noch, um diese ArrayList auszugeben und wie kann man da herangehen?

    LG
    Rantan
  • Problem gelöst!

    Der Trick dabei ist einfach die gesamte ArrayList an die dataTable zu übergeben. Meine output.jsp sieht folgendermaßen aus:

    Quellcode

    1. <html>
    2. <head>
    3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    4. <title>Ausgabe</title>
    5. </head>
    6. <body>
    7. <f:view>
    8. <h:form>
    9. <h:dataTable id="entryTable" var="entries" value="#{input.entryTable}">
    10. <h:column>
    11. <f:facet name="header">
    12. <h:outputText value="Entries"/>
    13. </f:facet>
    14. <h:outputText value="#{input.entries}"/>
    15. </h:column>
    16. </h:dataTable>
    17. </h:form>
    18. </f:view>
    19. </body>
    20. </html>
    Alles anzeigen


    Mit <h:dataTable id="entryTable" var="entries" value="#{input.entryTable}"> wird der dataTable die ArrayList übergeben. Der Code dazu lautet simpel:

    Quellcode

    1. public ArrayList getEntryTable() {
    2. i=-1;
    3. return list;
    4. }


    Was das i=-1 an der Stelle zu suchen hat wird gleich klar. Nun ist also die ArrayList übergeben und der nächste Aufruf in der dataTable lautet: <h:outputText value="#{input.entries}"/>
    Die Methode dazu sieht so aus:

    Quellcode

    1. public String getEntries() {
    2. i++;
    3. return (String) list.get(i);
    4. }


    Das i habe ich in der Methode vorher auf -1 gesetzt, da ich es hier nicht hinter dem return statement erhöhen konnte, sondern lediglich davor. Hierbei muss man beachten, dass beim Aufruf der dataTable die Übergabe der Arraylist nur einmal aufgerufen wird. Die Methode zur Übergabe eines Listenelements wird jedoch, so wie sie da steht, für jedes Element, dass sich in der ArrayList befindet automatisch einmal aufgerufen.

    Ich hoffe das hilft eventuell jemandem weiter, der auch mit JavaServer Faces anfängt. Es ist zwar nur ein sehr einfaches Beispiel, aber so sollte es einem wirklich leichter werden. Ich hätte mir zumindest so ein Beispiel gewünscht! ;)

    Gruß
    Rantan