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!