Hallo Leute,
ich programmiere momentan für eine Webseite ein Gästebuch. Der User kann auf der Seite seinen Namen eingeben, einen Betreff und eine Nachricht verfassen. Mit Klicken auf den Absenden-Button werden die drei Werte über einen Controller in die Bean-Klasse übertragen, wo diese anschließend in eine Datenbank-Tabelle eingetragen werden per SQL-Statement.
Die Datenbank-Tabelle sieht so aus:
ID | Name | Betreff | Nachricht | Datum | Status
ID wird bei jedem Eintrag automatisch hochgezählt. Datum wird in einer Methode in der Bean ermittelt und zum Eintrag hinzugefügt. Status ist per Default auf "0" und wird auch mit einer Methode dem Eintrag hinzugefügt. Das ist später für die Freigabe der Einträge nötig (0=nicht freigegeben, 1=freigegeben).
Anschließend hole ich mir mittels Methoden die einzelnen Spalten aus der Tabelle heraus und rufe diese Methoden in der View-Klasse auf:
Das Problem hier ist, dass die Methoden aus der View heraus nur einmal aufgerufen werden. Ich möchte aber, dass sie die Methode solange aufruft, bis sie alle Einträge aus der DB hat.
Momentan ist es so, dass eine Ausgabe bei einem Eintrag in der DB so aussieht, wie ich es möchte:
Eingetragen am: 09.03.18
von: Max Mustermann
Betreff: Nachricht 1
Nachricht: blabla1
Bei mehr als einem Eintrag sieht die Ausgabe so aus:
Eingetragen am: 09.03.18
07.03.18
von: Max Mustermann
Maria Musterfrau
Betreff: Nachricht 1
Nachricht2
Nachricht: blabla1
blabla2
Ich müsste es irgendwie hinkriegen, dass die Ausgabe Zeile für Zeile aus der DB erfolgt und nicht alle Daten geholt werden und einfach an den String den ich returne angehängt werden.
Am besten so:
Eingetragen am: 09.03.18
von: Max Mustermann
Betreff: Nachricht 1
Nachricht: blabla1
-------------------------------------------------------------------------------------------------
Eingetragen am: 07.03.18
von: Maria Musterfrau
Betreff: Nachricht 2
Nachricht: blabla2
Den SELECT Befehl für die Nachricht z.B. müsste ich irgendwie umbauen in "SELECT nachricht FROM tabelle WHERE id = " + i;
i wäre <= Anzahl Einträge in der DB und würde dann solange hochgezählt werden.
Aber es bringt mir nichts, wenn ich die Methode nur einmal aufrufen kann.
Ich hoffe ich konnte mein Anliegen einigermaßen verständlich schildern und würde mich über Anregungen und Tipps freuen.
MfG
ich programmiere momentan für eine Webseite ein Gästebuch. Der User kann auf der Seite seinen Namen eingeben, einen Betreff und eine Nachricht verfassen. Mit Klicken auf den Absenden-Button werden die drei Werte über einen Controller in die Bean-Klasse übertragen, wo diese anschließend in eine Datenbank-Tabelle eingetragen werden per SQL-Statement.
Die Datenbank-Tabelle sieht so aus:
ID | Name | Betreff | Nachricht | Datum | Status
ID wird bei jedem Eintrag automatisch hochgezählt. Datum wird in einer Methode in der Bean ermittelt und zum Eintrag hinzugefügt. Status ist per Default auf "0" und wird auch mit einer Methode dem Eintrag hinzugefügt. Das ist später für die Freigabe der Einträge nötig (0=nicht freigegeben, 1=freigegeben).
Anschließend hole ich mir mittels Methoden die einzelnen Spalten aus der Tabelle heraus und rufe diese Methoden in der View-Klasse auf:
HTML:
<div id="guestbookentry">
<div id="center">
<jsp:getProperty property="htmlDatum" name="gb"/>
<jsp:getProperty property="htmlName" name="gb"/>
</div>
<div id="center">
<jsp:getProperty property="htmlBetreff" name="gb"/>
</div>
<jsp:getProperty property="htmlNachricht" name="gb"/>
</div>
Das Problem hier ist, dass die Methoden aus der View heraus nur einmal aufgerufen werden. Ich möchte aber, dass sie die Methode solange aufruft, bis sie alle Einträge aus der DB hat.
Momentan ist es so, dass eine Ausgabe bei einem Eintrag in der DB so aussieht, wie ich es möchte:
Eingetragen am: 09.03.18
von: Max Mustermann
Betreff: Nachricht 1
Nachricht: blabla1
Bei mehr als einem Eintrag sieht die Ausgabe so aus:
Eingetragen am: 09.03.18
07.03.18
von: Max Mustermann
Maria Musterfrau
Betreff: Nachricht 1
Nachricht2
Nachricht: blabla1
blabla2
Ich müsste es irgendwie hinkriegen, dass die Ausgabe Zeile für Zeile aus der DB erfolgt und nicht alle Daten geholt werden und einfach an den String den ich returne angehängt werden.
Am besten so:
Eingetragen am: 09.03.18
von: Max Mustermann
Betreff: Nachricht 1
Nachricht: blabla1
-------------------------------------------------------------------------------------------------
Eingetragen am: 07.03.18
von: Maria Musterfrau
Betreff: Nachricht 2
Nachricht: blabla2
Den SELECT Befehl für die Nachricht z.B. müsste ich irgendwie umbauen in "SELECT nachricht FROM tabelle WHERE id = " + i;
i wäre <= Anzahl Einträge in der DB und würde dann solange hochgezählt werden.
Aber es bringt mir nichts, wenn ich die Methode nur einmal aufrufen kann.
Ich hoffe ich konnte mein Anliegen einigermaßen verständlich schildern und würde mich über Anregungen und Tipps freuen.
MfG