# Leere Bean?



## Fantasma (3. Mai 2011)

Hallo,

Ich habe ein problem mit JSP und Beans. Es sieht so aus, als ob die Bean nicht befuellt wird. Vielleicht kann mir jemand weiterhelfen?

Der Code ist:

Formular:

```
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<jsp:useBean id="newPersona" class="personapack.Persona" scope="session"/>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>AgregarPersona</title>
</head>
<body>
	<jsp:setProperty name="newPersona" property="*"/>
	<form action="/Ej3personas/ServiceHandler?opcion=agregarPers" method=post>
		Nombre: <input type="text" name="nombre"/><br>
		Apellido: <input type="text" name ="apellido"/><br>
		Nacimiento: <input type="text" name ="nacimiento"/><br>
		Email: <input type="text" name ="email"/><br>
		<input type="submit" value="Send">
		<input type="reset" value="Reset">

	</form>
	

</body>
</html>
```

Die Bean:

```
package personapack;

public class Persona  {
		private String nombre= "";
		private String apellido="";
		private String nacimiento="";
		private String email="";
		private int numero =0;
		private static int contador =0;
		
		public Persona(){

		}
		
		/*public Persona(String nombre, String apellido, String nacimiento, String email){
			this.nombre=nombre;
			this.apellido=apellido;
			this.nacimiento=nacimiento;
			this.email=email;
			this.numero =0;
		}*/
		
		public void setNombre(String nombre){
			this.nombre=nombre;
		}
		
		public void setApellido(String apellido){
			this.apellido=apellido;
		}
		
		public void setNacimiento(String nacimiento){
			this.nacimiento=nacimiento;
		}
		
		public void setEmail(String email){
			this.email=email;
		}
		
		public void setNumero(){
			this.numero = ++contador;
		}
		
		public String getNombre(){
			return nombre;
		}
		
		public String getApellido(){
			return apellido;
		}
		
		public String getNacimiento(){
			return nacimiento;
		}
		
		public String getEmail(){
			return email;
		}
		
		public int getNumero(){
			return numero;
		}
}
```

Und in diesem Teil vom Servlet soll es verarbeitet werden:

```
protected void ejecutar (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		String opcion = (String) request.getParameter("opcion");
		request.removeAttribute("opcion");
		System.out.println(opcion);
		else if(opcion.equals("agregarPers")){
			HttpSession session = request.getSession();
			personapack.Persona tmPersona=   
                                (personapack.Persona)session.getAttribute("newPersona");
			session.removeAttribute("newPersona");

			ControlPersonas.getControlPersonas().agregarPersona(tmPersona);
			System.out.println(tmPersona.getApellido());//--> Zeigt nichts an!
			PrintWriter out = response.getWriter();
			response.setContentType("text/html");
			out.print("<html>");
			out.print("<body>");
			out.print(opcion); //----------------------> Zeigt den wert der Operation an = OK
			out.print(tmPersona.getNombre()); //------> Zeigt nichts an!
			out.print(tmPersona.getNumero());//-------> Zeigt 0 an = OK
			out.print("</body>");

		}
```

Auch mit dem Debugger bekomme ich nur leere Werte ("").

Kann mir jemand einen Tip geben?

Danke schon mal.
Fantasma


----------



## Fantasma (3. Mai 2011)

PS.:
Wenn ich in der Bean die Variablen nur deklariere ohne sie zu initialisieren dann kommt als ausgabe auch nur null statt eben "" zurueck. Somit schaetze ich dass es wohl am .jsp liegen muss. Aber ich komme gerade einfach nicht weiter.


----------



## Fantasma (3. Mai 2011)

Kann mir niemand weiterhelfen?
oder ist mein problem zu offensichtlich?


----------



## Luke_ (4. Mai 2011)

Managed Bean Example

das sollte dir weiterhelfen...
der ansatz mit der form ist falsch... der rest sollte funktinoeren, wobei in dem servlet den htmlcode auszugeben fin ich schon ziemlich dreckig, zum testen sollte es aber genügen


----------



## JimPanse (4. Mai 2011)

Luke_ hat gesagt.:


> Managed Bean Example
> 
> das sollte dir weiterhelfen...
> der ansatz mit der form ist falsch... der rest sollte funktinoeren, wobei in dem servlet den htmlcode auszugeben fin ich schon ziemlich dreckig, zum testen sollte es aber genügen



Na das ist ja totaler unsinn! Das ist JSF -> JavaServer Faces und Fantasma arbeitet mit reinem JSP -> JavaServer Pages.

wenn dann das JSP-Tutorial - Beans in JSPs oder das JSP (Java Server Pages) Grundlagen

aber sowas habe ich leider seit dem Studium nicht mehr gemacht und d.h. kann ich dir da leider auch nicht mehr wirklich weiterhelfen.


----------



## Luke_ (4. Mai 2011)

oh verdammt...
das hab ich einfach mal ignoriert :noe: sorry!
hab die beans bisher nur in jsf benutzt... also mal kurz in jsp angerissen, aber nicht erwähnenswert....
warum weist du den attributen denn nen leeren string zu? theoretisch müssten die zugewisenen werte überschrieben werte, aber vielleicht hakts da?

oder 
	
	
	
	





```
<jsp:setProperty name="newPersona" property="*"/>
```
 direkt unter useBean?


----------



## mfernau (4. Mai 2011)

Das stimmt allerdings. Das Beispiel da oben ergibt keinen Sinn.

In Deiner JSP-Seite erstellst Du Deine Bean und befüllst sie mit den Request-Parametern die denselben Namen haben wie Deine Bean. Im Initialfall (Du rufst diese JSP-Seite das erste mal auf) ist dort aber alles leer. Gut.
Das Form von Dir soll nun Werte an diese Bean senden - allerdings musst Du dafür das Form auch an dieselbe JSP-Seite wieder zurück senden und nicht an irgend ein Servlet. Damit gibst Du die Kontrolle nämlich komplett aus dem JSP-Context ab an Dein Servlet und dort wird diese Bean nicht befüllt. Es ist sicherlich ohnehin etwas schwierig JSP mit Servlet-Technik zu kreuzen.
Du solltest als action-Target dieselbe JSP-Seite wieder benutzen.


----------



## Fantasma (4. Mai 2011)

Hallo Leute:
Danke fuer die Hilfe.

Ich hab das jetzt etwas abgeaendert und zwar so dass ich die wertebelegung erst im Servlet mache. Ich war etwas urcheinander gekommen wegen einem Tutorial aber in dem werden die daten in einem formular kontext an eine art uebergangsseite und von dort aus zum servlet geschickt. Und wo dann "property="*"" auf der uebergangsseite aufgerufen wurde gab es schon die daten zum befuellen. aber das funktioniert natuerlcih in meiner version nicht.

Die Anwendung hatte ich eigentlich nur gedacht um mal selbst einen mvc mit .jsp und servletts programmiert zu haben. Mehr nicht. und klar, das html im servlett lasse ich nur solange ich die einzelnen Ifs nicht implementiert habe.

Soweit ich weis benutzt niemand mehr .jsp und servletts. Ist das ricthig oder gibt es faelle in denen es noch notwendig ist?

Ich hab uebrigens eine sehr gute tutorial seite zu JSF gefunden.. Da gibt es isolierte Beispiele zu den einzelnen Komponenten. Sehr gut gemacht finde ich: JSF 2.0 Tutorials (auf Englisch aber mit sehr knappen, verstaendlichen beispielen)

Gibt es hier eigentlich einen Thread wo Tutorial links gesammelt werden? Ich glaube von dem einen oben koennten auch andere profitieren.

Bis dann
F


----------

