Einstellungen werde nicht in Bean übernommen

Matze

Weltenwanderer
Hallo,

keine einzige Eingabe wird bei einem Submit in mein Bean übernommen. Bin Ratlos woran das liegen könnte :confused::

Die JSP:
Java:
/* User Name */
    out.println("Name:");
    out.println("<BR>");
    out.println("<INPUT NAME=\"name\" value=" + vecUserData.get(0).toString() + ">");
    out.println("<BR>");

    /* Passwort */
    out.println("Passwort:");
    out.println("<BR>");
    out.println("<INPUT NAME=\"password\" type=\"password\">");
    out.println("<BR>");

    /* Notiz */
    out.println("Notiz:");
    out.println("<BR>");
    out.println("<INPUT NAME=\"notes\" value=" + vecUserData.get(1).toString() + ">");
    out.println("<BR>");

    /* sap_uid */
    out.println("sap_uid:");
    out.println("<BR>");
    out.println("<INPUT NAME=\"sap_uid\" value=" + vecUserData.get(2).toString() + ">");
    out.println("<BR>");

    /* User Lschen */
    out.println("User lschen:");
    out.println("<select name='delete' size='1'>");
    out.println("<option selected>Nein</option><option>Ja</option>'");
    out.println("</select>");
    out.println("<BR>");

Die Bean:
Java:
public class ChangeBean{

    private String name = "";
    private String password = "";
    private String sap_uid = "";
    private String notes = "";
    private String delete = "";


    public void setName(String newValue){
	System.out.println("Ich SCHREIBE gerade");
	if (newValue!=null) {
	    this.name = newValue;
	}
    }

    public String getName(){
	System.out.println("Ich LESE gerade");
	return(this.name);
    }

    public void setPassword(String newValue){
	System.out.println("Ich SCHREIBE gerade Password");
	if (newValue!=null) {
	    this.password = newValue;
	}
    }

    public String getPassword(){
	System.out.println("Ich LESE gerade Password");
	return(this.password);
    }

    public void setSap_uid(String newValue){
	System.out.println("Ich SCHREIBE gerade Sap_uid");
	if (newValue!=null) {
	    this.sap_uid = newValue;
	}
    }

    public String getSap_uid(){
	System.out.println("Ich LESE gerade Sap_uid");
	return(this.sap_uid);
    }

    public void setNotes(String newValue){
	System.out.println("Ich SCHREIBE gerade Notes");
	if (newValue!=null) {
	    this.notes = newValue;
	}
    }

    public String getNotes(){
	System.out.println("Ich LESE gerade Notes");
	return(this.notes);
    }

    public void setDelete(String newValue){
	System.out.println("Ich SCHREIBE gerade delete");
	if (newValue!=null) {
	    this.delete = newValue;
	}
    }

    public String getDelete(){
	System.out.println("Ich LESE gerade delete");
	return(this.delete);
    }

}
 
Hallo,

... keine einzige Eingabe wird bei einem Submit in mein Bean übernommen. Bin Ratlos woran das liegen könnte ...

Wo verarbeitest du denn die Parameter, die bei dem Submit übertragen werden, also wo setzt du entsprechend die Werte bei der Bean?

Und noch ein rein subjektiver Hinweis :)
Die JSP:
Java:
/* User Name */
    out.println("Name:");
    out.println("<BR>");
    out.println("<INPUT NAME=\"name\" value=" + vecUserData.get(0).toString() + ">");
    out.println("<BR>");
Das ist echt grausam! Ich mein schon normaler Javacode in einer JSP ist unübersichtlich, aber damit dann auch noch über out.println() HTML zu erzeugen - brrrr.

Grüße
THMD
 
Wo verarbeitest du denn die Parameter, die bei dem Submit übertragen werden, also wo setzt du entsprechend die Werte bei der Bean?
Die will ich erstmal auf einer anderen JSP anzeigen. Was meinst du mit Werte setzen? Geschieht das nicht automatisch über die getter und setter in der Bean :confused:

Das ist echt grausam! Ich mein schon normaler Javacode in einer JSP ist unübersichtlich, aber damit dann auch noch über out.println() HTML zu erzeugen - brrrr.
Ok, werde ich zukünftig berücksichtigen ;)
 
Hallo,

... Was meinst du mit Werte setzen? Geschieht das nicht automatisch über die getter und setter in der Bean...
Nö, irgendwer (Servlet, JSP, Framework etc.) muss die HTML-Parameter verarbeiten und in der Bean setzen

Ok hier mal ein ganz einfaches Beispiel. Es treten auf eine Bean (User) und zwei JSP's (enter.jsp und display.jsp)

User:
Java:
package de.test;

public class User {
	String name;
	String email;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

enter.jsp:
Code:
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Enter</title>
</head>
<body>
	<jsp:useBean id="user" scope="session" class="de.test.User">
	</jsp:useBean>
	<jsp:setProperty name="user" property="name" value="Peter Mustermann"/>
	<jsp:setProperty name="user" property="email" value="test@west.de"/>
	
	
	<form action="display.jsp">
		<input type="text" name="inputname" value="${user.name}" /><br/>
		<input type="text" name="inputmail" value="${user.email}" /><br/>
		<input type="submit" value="Anzeigen" />
	</form>
</body>
</html>
In der enter.jsp wird über jsp:useBean eine Instanz von User erzeugt (wenn noch nicht vorhanden). Diese Instanz ist unter der id "user" ansprechbar. Als nächstes werden über jsp:setProperty die beiden Felder name und email von user entsprechend vorbelegt und über die EL-Ausdrücke ${user.name} und ${user.email} in den Eingabefeldern angezeigt. Die Bean wird in den Session-Scope gelegt, damit sie über mehrere Seiten erhalten bleibt. In dem Beispiel würde auch der Request-Scope ausreichen, da ja nur ein Request auf die display.jsp erfolgt. Standardmäßig (also wenn du keinen Scope angibst) wird der Page-Scope benutzt - die Bean ist damit nur auf dieser Seite gültig und könnte auf keiner anderen mehr ausgewertet werden. Wenn du jetzt auf den Submit-Button drückst, werden die Werte der input-Felder ganz normal als Request-Parameter mitgeschickt - in dem Fall an die display.jsp. Dort müssen sie entsprechend verarbeitet werden.

display.jsp:
Code:
<%@ 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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<jsp:setProperty name="user" property="name" param="inputname"/>
	<jsp:setProperty name="user" property="email" param="inputmail"/>
	
	Name: ${user.name} <br/> 
	Mail: ${user.email} <br/>
</body>
</html>

Das Verarbeiten geschieht hier über jsp:setProperty. Dabei werden der Bean, die unter der ID "user" existiert die Request-Parameter übergeben. Die Anzeige erfolgt wieder über EL-Ausdrücke. Je nachdem, was die Inputfelder für Namen haben, kann man die jsp:setProperty-Tags auch anders machen - siehe hier.

hth
THMD
 
Vielen Dank, klappt jetzt.
Wird aber bestimmt nicht meine letze Frage heute sein, ich hoffe mal, dass klappt dann genauso gut ;)
 

Neue Beiträge

Zurück