# JSF Fo_rmulardaten in DB mittels H_i_bernate speichern



## Shoodan (26. Dez 2008)

wie die Überschrift schon verrät möchte ich Jsf Formulardaten mittels Hibernate in eine Mysql-DB speichern.
Mein Problem ist, dass ich keine Ahnung habe ich wie das realisieren kann????
Habe ein paar Stunden gegooglelt und nichts gefunden....

Was ich schon habe:
1. JSP-seite mit formular, die die Daten auf anderer JSP-Seite ausgibt. wird mittels JSF realisiert, funktioniert
2. Eine BeanKlasse, die mit Annotations und einer main-Methode daten in Datenbank speichert, funktioniert

Jetzt würde ich gerne diese beiden kombinieren. Wo erstelle ich aber meine sessionFactory jetzt, vorher war sie in der main.

Kann mir irgendjemand sagen wie das im allgemeinen gemacht wird, oder hat jemand kleines CodeBeispiel?

Vielen Dank schon mal im Voraus!

- Thomas


----------



## Mean (26. Dez 2008)

Hallo Thomas,

k.A., ob ich dich 100%ig richtig verstanden habe, aber du mußt eigentlich nur einen Button anlegen, der auf eine Methode in deiner, zur Seite gehörigen, Bean zugreift:


```
<h:commandButton action="#{Bean.methode()}" value="Speichern" />
```

und aus der Methode methode greifst du dann auf die Speichern-Methode zu, die du schon hast. Als Paramter übergibst du einfach das zu speichernde Objekt.

Grüße,

Dirk[/code]


----------



## Shoodan (26. Dez 2008)

in meiner Klasse habe ich aber nur setter und getter Methoden. soll eine reine PersistenzKlasse bleiben.

googlen heute brachte mich auf HibernateUtil-Klassen, die das mit der sessionfactory machen und DAO Klassen die für allgemeine Persistenzmethoden zuständig sind.

solche code-beispiele bräuchte ich, denn ich hätte ganz gerne eine schon für gut gefundenene und getestete Vorgehensweise

- thomas


----------



## Shoodan (26. Dez 2008)

*Klasse: Test*

package data;

import hibernateStuff.HibernateUtil;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.SessionFactory;

import java.io.Serializable;

@Entity
@Table(name="test")
public class Test implements Serializable
{

	private int id;
	private int i;
	//konstruktor
	public Test(){
	}

	/** Der Primary Key. */
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}

	/** Der Name der Spalte */
	@Column(name = "i")
	public int getI() {
		return i;
	}
	public void setI(int i) {
		this.i = i;
	}

}

*HandlerKlasse dazu*

package handler;

import data.Test;
import hibernateStuff.HibernateUtil;

//import hibernateStuff.HibernateUtil;
public class TestHandler {

	public Test test;

	public TestHandler(){
	}

	public Test getTest() {
		return test;
	}

	public void setTest(Test test) {
		this.test = test;
	}
	public String save() {

		HibernateUtil hUtil = new HibernateUtil();
		hUtil.saveObjectToDatabase(test);
		return "success";
	}


}


die jsp-seite:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<head>
	<title>Berechnung eines Flächeninhaltes</title>
</head>

<body>
<f:view>
	<h:messages>
	<h3>JSF-Beispielanwendung:</h3>





    <h:form id="inputForm">

		Bitte geben Sie eine Seitenlänge ein:	
		<h:inputText value="#{TestHandler.test.i}" />
		<h:commandButton value="Berechnen" action="#{TestHandler.save}" /> 

	</h:form>
	</h:messages>

</f:view>
</body>
</html>




sobald ich auf den button klicke kommt folgende exception:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: /eingabe.jsp(18,2) '#{TestHandler.test.i}' Target Unreachable, 'test' returned null
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)


root cause 

org.apache.jasper.el.JspPropertyNotFoundException: /eingabe.jsp(18,2) '#{TestHandler.test.i}' Target Unreachable, 'test' returned null
	org.apache.jasper.el.JspValueExpression.getType(JspValueExpression.java:61)
	com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:129)
	javax.faces.component.UIInput.getConvertedValue(UIInput.java:943)
	javax.faces.component.UIInput.validate(UIInput.java:868)
	javax.faces.component.UIInput.executeValidate(UIInput.java:1078)
	javax.faces.component.UIInput.processValidators(UIInput.java:670)
	javax.faces.component.UIForm.processValidators(UIForm.java:229)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
	javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1039)
	javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:672)
	com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
	com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.18



warum ist test unreachable???


thx

-Thomas


----------

