[Erledigt] Überprüfung der Eingabe funktioniert nicht

Hi,

ich habe zwei Dateien:

beanInput.jsp

<%@ page import="java.util.Iterator" %>

<%-- Binden der javaBean an den symbolischen Name 'form' --%>
<jsp:useBean id="form" class="de.akdabas.jli.j2ee.bean.FormBean" scope="session"/>

<%-- Übernehmen der HTTP-Parameter in die JavaBean --%>
<jsp:setProperty name="form" property="name" value="<%= request.getParameter("name") %>"/>
<jsp:setProperty name="form" property="name" value="<%= request.getParameter("email") %>"/>

<%-- Aufruf der Geschäftslogik, ggf. Weiterleiten zur Ausgabe --%>
<%
	form.validate();
	if(form.isValid()){
		//Weiterleiten des Request an die Ausgabeseite
		response.sendRedirect("beanOutput.jsp");
	}
%>
<html>
	<body>
	<%-- Kodieren des URLs (siehe 3.4.4) --%>
	<form action='<%= response.encodeURL("beanInput.jsp") %>'>
		Bitte füllen Sie das folgende Formular aus !
		
		<%-- ggf. Ausgabe von aufgetretenen Fehlern --%>
		<%if(! form.isValid()) {%>
			<ul>
			<%
				Iterator i = form.getErrors().iterator();
				while(i.hasNext()){
			%>
			<li> <%= i.next() %> </li></ul>
			<% } %>
		<% } %>
		
		Name: <input type="text" name="name" /> <br/>
		eMail: <input type="text" name="email" /> <br/>
		
		<input type="reset" value="Reset" />
		<input type="submit" value="Absenden" />
	</form>
	</body>
</html>```

und

FormBean.java
```package de.akdabas.jli.j2ee.bean;

import java.util.LinkedList;
import java.util.List;

/** Speichert und validiert die Daten eines HTML-Formulars */
public class FormBean {
	
	/** Der Name */
	private String name;
	public String getName(){
		return name;
	}
	
	public void setName(String aName){
		name = aName;
	}
	
	/** Die E-Mail-Adresse */
	private String eMail;
	public String getEmail(){
		return eMail;
	}
	
	public void setEmail(String aAddress){
		eMail = aAddress;
	}
	
	/** Möglicherweise aufgetretene Eingabefehler */
	private List errors = new LinkedList();
	public List getErrors(){
		return errors;
	}
	
	/** Flag, ob alle Angaben korrekt sind */
	boolean valid = false;
	public boolean isValid(){
		return valid;
	}
	
	/** Validiert die Eingabe */
	public boolean validate(){
		
		//Zurücksetzen des Flags und der Fehlerliste
		valid = false;
		errors = new LinkedList();
		
		//Überprüfe den eingegebenen Namen
		if(name == null || name.length() == 0){
			errors.add("Bitte geben Sie die eMail-Adresse ein.");
		}
		
		//Überprüfe die Syntax der E-Mail-Adresse
		if(eMail != null && eMail.indexOf("@") == -1){
			errors.add("Ungültiges Format der eMail-Adresse.");
		}
		
		//Wenn keine Fehler aufgetreten sind => valid = true
		if(errors.size() == 0){
			valid = true;
		}
		
		return valid;
	}
}```

Das Beispiel ist aus einem Buch. (ich habe es von Hand abgetippt, deshalb sich Fehler nicht ausgeschlossen)
beanOutput.jsp existiert noch nicht, ist auch an dieser Stelle unwichtig.

JavaBean soll eigentlich überprüfen ob meine Eingabe im Formular richtig ist und wenn die Eingabe falsch ist, den Fehler anzeigen. Jedoch tut diese Datei das nicht... Egal was ich eingebe, ich werde immer weitergeleitet.
Warum wird hier immer mit == vergliechen? Das sind zwar alles Objekte, jedoch vom Typ String, oder irre ich mich? Also sollte das mit equals richtig sein, jedoch wenn ich das tue, dann geht gar nichts mehr :), wahrscheinlich mache ich dabei einen Syntax-Fehler.

Wenn ich Änderungen in der JavaBean (also *.java) vornehme, muss ich die Datei noch kompilieren, oder tut Eclipse das beim Abspeichern automatisch?

Danke!

ich blick da irgendwie nicht so ganz durch :smiley:
Ein Tipp wenn du ein gutes Buch suchst nimm Head First - JSP & Servlets das ist genial

[QUOTE=EagleEye]ich blick da irgendwie nicht so ganz durch :smiley:
Ein Tipp wenn du ein gutes Buch suchst nimm Head First - JSP & Servlets das ist genial[/QUOTE]

ich kann die ganze reihe empfehlen bis auf javascript , jsp udn sql habe ich alle bücher gelesen

also zuerst ist mir aufgefallen, dass du oben

<jsp:setProperty name="form" property="name" value="<%= request.getParameter("email") %>"/>``` beides mal name und email dem name attribut zuweist. Schätze das ist ein Flüchtigkeitsfehler. Das erklärt vllt warum deine falschen Eingaben nicht als falsch erkannt werden.

Ansonsten fällt mir auf den ersten Blick nichts auf. Sind die JPSs richtig kompiliert? Sicherheitshalber vllt doch mal nen clean und kompletten rebuild machen, nicht dass da irgendwo noch alte Sachen liegen.

Nachtrag: Man kann deswegen mit == vergleichen, weil die ganzen Methoden, z.B. name.length() ja nen Integer also eine Ganzzahl zurückgeben. D.h. in der If Bedigung steht dann (Länge des Names == 0)

Ich habe mir das Buch: Jetzt lerne ich J2EE gekauft, von Markt und Technik. Bin zwar nicht begeistert von dem Buch ehrlich gesagt, ist sehr trocken mit ganz wenig Beispielen, jedoch scheint das Buch auch nicht sehr schlecht zu sein :), deshalb werde ich erstmal das zu Ende lesen.

@Revenant, das habe ich übersehen! Ich nehme an, dass es daran lag. Ich werde es am Montag testen und berichten. Vielen Dank!

Danke! Das war der Fehler.