Hallo Allerseits!
Leider finde ich sowohl im Netz als auch in Büchern nicht wirklich Rat und langsam erschleicht sich mir das Gefühl, dass entweder irgendwas richtig faul ist oder ich bin einfach unfähig!
Folgendes Szenario:
Mal angenommen ich habe eine JSF-Seite (.xhtml-Datei), die mehrere Eingabefelder (<h:inputText... />) besitzt, die ihre Werte in verschiedenen Backing Beans/Managed Beans (Java-Klassen) übermittelt. Zum Beispiel ein Feld für den Nachnamen (mit der dazugehörigen Java-Klasse: Personal.java) und ein Feld für den bestellten Artikel (mit der dazugehörigen Java-Klasse: Warenkorb.java). Außerdem besitzt die Seite ein Save-Button, der wenn er betätigt wird die eingegebenen Daten in die Datenbank speichern soll (mit der dazugehörigen Java-Klasse: Jdbc.java).
Code der JSF-Seite:
Code der Personal.java-Klasse:
Code der Warenkorb.java-Klasse:
Code der Jdbc.java-Klasse:
Bitte im Code der Jdbc-Klasse die letzte Zeile (stmt.executeUpdate) ignorieren. Die funktioniert natürlich so nicht, da ich schlecht einfach "nachname" und "artikel" schreiben kann ohne dass die Variablen/Werte der Jdbc-Klasse bekannt sind.
Und genau hier ist eben mein Problem!
Wie komme ich in meiner Jdbc-Klasse an die von mir eingegebenen Daten (Nachname und Artikel)?
Info: Ich möchte ungern all Variablen und all meine Logik in eine einzige Java-Klasse packen.
Ich wär Euch super dankbar, wenn ihr mir diesbezüglich weiterhelfen könntet.
Viele Grüße und vielen Dank im Voraus.
Leider finde ich sowohl im Netz als auch in Büchern nicht wirklich Rat und langsam erschleicht sich mir das Gefühl, dass entweder irgendwas richtig faul ist oder ich bin einfach unfähig!
Folgendes Szenario:
Mal angenommen ich habe eine JSF-Seite (.xhtml-Datei), die mehrere Eingabefelder (<h:inputText... />) besitzt, die ihre Werte in verschiedenen Backing Beans/Managed Beans (Java-Klassen) übermittelt. Zum Beispiel ein Feld für den Nachnamen (mit der dazugehörigen Java-Klasse: Personal.java) und ein Feld für den bestellten Artikel (mit der dazugehörigen Java-Klasse: Warenkorb.java). Außerdem besitzt die Seite ein Save-Button, der wenn er betätigt wird die eingegebenen Daten in die Datenbank speichern soll (mit der dazugehörigen Java-Klasse: Jdbc.java).
Code der JSF-Seite:
HTML:
<table>
<tr>
<td><h:inputText id="Nachname" value="#{personal.nachname}" /></td>
</tr>
<tr>
<td><h:inputText id="Artikel" value="#{warenkorb.artikel}" /></td>
</tr>
<tr>
<td><h:commandButton action="#{jdbc.insertDataIntoDB}" value="Save" /></td>
</tr>
</table>
Code der Personal.java-Klasse:
Code:
@ManagedBean (name = "personal")
@SessionScoped
public class Personal
{
private String nachname;
public String getNachname()
{
return nachname;
}
public void setNachname(String nachname)
{
this.nachname = nachname;
}
}
Code der Warenkorb.java-Klasse:
Code:
@ManagedBean (name = "warenkorb")
@SessionScoped
public class Warenkorb
{
private String artikel;
public String getArtikel()
{
return artikel;
}
public void setArtikel(String artikel)
{
this.artikel = artikel;
}
}
Code der Jdbc.java-Klasse:
Code:
@ManagedBean (name = "jdbc")
@SessionScoped
public class Jdbc
{
public String insertDataIntoDB()
{
Connection conn = null;
Statement stmt = null;
try
{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_xyz", "username", "pw");
stmt = conn.createStatement();
stmt.executeUpdate("INSERT INTO db_xyz.tbl_bestellungen (Nachname, Artikel) VALUES (" + nachname + "," + artikel + ");");
}
...
}
Bitte im Code der Jdbc-Klasse die letzte Zeile (stmt.executeUpdate) ignorieren. Die funktioniert natürlich so nicht, da ich schlecht einfach "nachname" und "artikel" schreiben kann ohne dass die Variablen/Werte der Jdbc-Klasse bekannt sind.
Und genau hier ist eben mein Problem!
Wie komme ich in meiner Jdbc-Klasse an die von mir eingegebenen Daten (Nachname und Artikel)?
Info: Ich möchte ungern all Variablen und all meine Logik in eine einzige Java-Klasse packen.
Ich wär Euch super dankbar, wenn ihr mir diesbezüglich weiterhelfen könntet.
Viele Grüße und vielen Dank im Voraus.
Zuletzt bearbeitet: