JSF-JDBC Verbindung Crud

Husamoli345

Mitglied
Heyhou ich versuche mich grade an einer JSF JDBC Anwendung ein Login Example habe ich auch schon hinbekommen daher gehe ich aus das meine Datenbankverbindung soweit funktioniert leider gibt es bei dem Crud Example ein Problem...vielleicht könnt ihr mir helfen wieso werden die Daten aus der Datenbanktabelle nicht angezeigt ich sehe nur die Überschriften der Tabelle :/

Alles läuft auf der Eclipse EE und auf einem Tomcat 8.5 verwendet wird jsf 2.1.7

[CODE lang="java" title="Car.java"]
public class Car {

private Integer cid;
private String cname;
private String color;
private Integer speed;
private String mfdctry;

public Car() {
}

public Car(Integer cid, String cname, String color, Integer speed,
String mfdctry) {
this.cid = cid;
this.cname = cname;
this.color = color;
this.speed = speed;
this.mfdctry = mfdctry;
}

public Integer getCid() {
return cid;
}

public void setCid(Integer cid) {
this.cid = cid;
}

public String getCname() {
return cname;
}

public void setCname(String cname) {
this.cname = cname;
}

public String getColor() {
return color;
}

public void setColor(String color) {
this.color = color;
}

public Integer getSpeed() {
return speed;
}

public void setSpeed(Integer speed) {
this.speed = speed;
}

public String getMfdctry() {
return mfdctry;
}

public void setMfdctry(String mfdctry) {
this.mfdctry = mfdctry;
}

}
[/CODE]


[CODE lang="java" title="CarBean.java"]import java.sql.*;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class CarBean {

private final String url = "jdbc😛ostgresql://localhost/postgres";
private final String user ="postgres";
private final String password ="admin";

private void connect() {
try(Connection con = DriverManager.getConnection(url, user, password)😉 {
if(con != null) {
System.out.println("Verbunden");
}else {
System.out.println("failed to connect");
}
} catch (SQLException e) {
e.printStackTrace();
}
}



public List<Car> getCars() throws ClassNotFoundException, SQLException {


Connection connect = null;

String url = "jdbc😛ostgresql://localhost/postgres";

String username = "postgres";
String password = "admin";

try {

Class.forName ("org.postgresql.Driver");

connect = DriverManager.getConnection(url, username, password);
System.out.println("Connection established"+connect);

} catch (SQLException ex) {
System.out.println("in exec");
System.out.println(ex.getMessage());
System.out.println("Verbindung wurde nicht hergestellt");
}

List<Car> cars = new ArrayList<Car>();
PreparedStatement pstmt = connect
.prepareStatement("select car_id, cname, color, speed, Manufactured_Country from Car");
ResultSet rs = pstmt.executeQuery();

while (rs.next()) {

Car car = new Car();
car.setCid(rs.getInt("car_id"));
car.setCname(rs.getString("cname"));
car.setColor(rs.getString("color"));
car.setSpeed(rs.getInt("speed"));
car.setMfdctry(rs.getString("Manufactured_Country"));

cars.add(car);

}

// close resources
rs.close();
pstmt.close();
connect.close();

return cars;

}
public static void main(String[] args) {
CarBean connect = new CarBean();
connect.connect();


}
}[/CODE]



und meine
[CODE lang="xml" title="car.xhtml"]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF JDBC Integration</title>

</h:head>
<h:body>
<h2>Car Details</h2>
<h:dataTable value="#{carBean.cars}" var="car" border="2">
<h:column>
<f:facet name="header">Car ID</f:facet>
#{car.cid}
</h:column>
<h:column>
<f:facet name="header">Car Name</f:facet>
#{car.cname}
</h:column>
<h:column>
<f:facet name="header">Car Color</f:facet>
#{car.color}
</h:column>
<h:column>
<f:facet name="header">Car Speed</f:facet>
#{car.speed}
</h:column>
<h:column>
<f:facet name="header">Manufactured Country</f:facet>
#{car.mfdctry}
</h:column>
</h:dataTable>
</h:body>
</html>[/CODE]



und die Web.xml
[CODE lang="xml" title="web.xml"]<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>car.xhtml</welcome-file>
</welcome-file-list>
</web-app>[/CODE]




Ich weiß leider nichtmehr weiter meine faces-config.xml
[CODE lang="java" title="faces-config.xml"]<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">

<navigation-rule>
<description>StartPage</description>
<from-view-id>/car.xhtml</from-view-id>
</navigation-rule>

</faces-config>[/CODE]


Wie gesagt ich sehe nur die Tabellen der Car.xhtml aber nicht die Einträge aus der Datenbank die verbindung funktioniert aber...ihr wert mir echt eine Hilfe..
 
Auf den ersten Blick sieht halt alles korrekt aus. Hast Du mal die Logfiles geprüft, ob da etwas gefunden wird? Hast Du mal ein Logging eingeführt um zu sehen, ob er z,B. die Datenbank abfragt?

Das wären so Ideen, die ich prüfen würde ...

Ansonsten greifst Du mit dem Connection String auf die Datenbank postgres zu. Das ist die Datenbank, die die System Catalogs enthält. In der Regel wird man seine eigene Datenbank erzeugen in der man dann Tabellen und so anlegt. das wäre so das Einzige, das hier noch etwas auffällt bei Deinem Code...
 
Zur Sicherheit, so war das gemeint:
XML:
<url-pattern>*.xhtml</url-pattern>
Hab ich soweit gemacht.


<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
 
Hallo kneitzel ein Login habe ich ausgeführt die Datenbank funktioniert soweit.
Es geht ja nicht um das Logon zur Datenbank. Mit Adminrechten ist das ok - auch zur Datenbank postgres.

Die Fragestellung war: Du hast in der Datenbank postgres die Tabelle Car erzeugt? Üblich ist, dass man eigenständige Datenbanken für ein Projekt anlegt. Aber funktionieren sollte es - wäre aber ggf. ein Punkt, den man prüfen kann, also man kann z.B. im psql machen:
\l listet die Datenbanken auf.
\c <datebank> (also z.B. \c test) wechselt in eine andere Datenbank (im Beispiel in die Datenbank test)
\dt listet die Tabellen der aktuellen Datenbank
Oder man nutzt ein graphisches Frontend Deiner Wahl, falls das einfacher ist.

Und dann halt das einfügen von Log-Meldungen, um mehr Informationen zu bekommen. Ich bin ein Fan von Logs - dann weiß man, ob z.B. der bean überhaupt aufgerufen wurde, was für Datenbank-spezifisch Dinge passiert sind u.s.w. Das war der erste Hinweis - denn dann könntest Du z.B. sagen: Er hat den Bean nie aufgerufen (==> Da wäre der Hinweis von @mihe7 interessant ... Im Augenblick würde mich das wundern, denn mit dem * umfasst Du ja auch das *.xhtml - aber da mag ich mich gerne irren 🙂 )

Aber vom Aufbau her ist es ja einfach nur eine Umsetzung von https://www.journaldev.com/7068/jsf-database-example-mysql-jdbc auf postgresql ...
 
omg es funktioniert.....ich musste lediglich in der faces-config die StartPage von
<navigation-rule>
<description>StartPage</description>
<from-view-id>/car.xhtml</from-view-id>
</navigation-rule>


statt car.xhtml in index.xhtml und schon funktioniert es.

Danke für eure Hilfe ihr seit Helden für mich 🙂
 
Mir fällt grade auf wenn ich car.xhtml schreibe funktioniert es genauso gut wie index.xhtml es lag dann wohl doch an ihrem Einwand statt /faces/ .xhtml zu schreiben vielen dank 🙂
 

Zurück
Oben