|
|
JSP - Workshop - Formularverarbeitung - Step 3/4

Jetzt widmen wir uns der Validierung des Formulars, wir wollen ja nicht durchgehen lassen...
Formular zum ausprobieren
Das Formular wird jetzt auch validiert. Jetzt müssen alle Felder ausgefüllt werden, die eMail-Adresse wird
nach einem bestimmten Muster überprüft und der Kommentar darf nicht länger als 10 Zeichen sein.
JSP-Quellcode
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<%@ page import="java.util.regex.*" %>
<%!
private String getStartErrorTag(String sKey, Vector vError)
{
if (vError.contains(sKey))
{
return "<b>";
}
return "";
}
private String getEndErrorTag(String sKey, Vector vError)
{
if (vError.contains(sKey))
{
return "</b>";
}
return "";
}
%>
<%
Vector vError = new Vector();
String sName = "";
String sEmail = "";
String sIchbin = "";
String sQualifikation = "";
String sKommentar = "";
Vector vInteressen = new Vector();
// Wenn das Formular abgeschickt wurde
if (request.getParameter("name") != null)
{
sName = request.getParameter("name");
if (sName.length() == 0) vError.add("name");
sEmail = request.getParameter("email");
Pattern p = Pattern.compile("^[a-zA-Z0-9]+((\\.|!|_|\\+|\\-)[a-zA-Z0-9]+)*@([a-zA-Z0-9]+(\\.|\\-))+[a-zA-Z0-9]{2,}$");
Matcher m = p.matcher(sEmail);
if (!m.matches()) vError.add("email");
sIchbin = request.getParameter("ichbin");
if (sIchbin == null) vError.add("ichbin");
sQualifikation = request.getParameter("qualifikation");
if (sQualifikation.length() == 0) vError.add("qualifikation");
sKommentar = request.getParameter("kommentar");
if (sKommentar.length() > 10) vError.add("kommentar");
String[] sInteressen = request.getParameterValues("interessen");
if (sInteressen != null)
{
for (int i=0; i<sInteressen.length; i++)
{
vInteressen.add(sInteressen[i]);
}
}
else
{
vError.add("interessen");
}
}
if (request.getParameter("name") != null && vError.isEmpty())
{
%>
<html>
<body>
Vielen Dank.
</body>
</html>
<%
}
else
{
%>
<html>
<body>
<%
if (!vError.isEmpty())
{
out.print("<b>Bitte überprüfen Sie die markierten Felder</b><br>");
}
%>
<form action="./step3.jsp" method="post">
<table>
<tr>
<td><%= getStartErrorTag("name", vError) %>Name<%= getEndErrorTag("name", vError) %>:</td>
<td><input type="text" name="name" size="20" value="<%= sName %>"></td>
</tr>
<tr>
<td><%= getStartErrorTag("email", vError) %>eMail<%= getEndErrorTag("email", vError) %>:</td>
<td><input type="text" name="email" size="20" value="<%= sEmail %>"></td>
</tr>
<tr>
<td><%= getStartErrorTag("interessen", vError) %>Interessen<%= getEndErrorTag("interessen", vError) %>:</td>
<td>
<input type="checkbox" name="interessen" value="jsp"<%= vInteressen.contains("jsp") ? " checked" : "" %>> JSP
<input type="checkbox" name="interessen" value="php"<%= vInteressen.contains("php") ? " checked" : "" %>> PHP
<input type="checkbox" name="interessen" value="ruby"<%= vInteressen.contains("ruby") ? " checked" : "" %>> Ruby
</td>
</tr>
<tr>
<td><%= getStartErrorTag("ichbin", vError) %>Ich bin<%= getEndErrorTag("ichbin", vError) %>:</td>
<td>
<input type="radio" name="ichbin" value="1"<%= "1".equals(sIchbin) ? " checked" : "" %>> männlich
<input type="radio" name="ichbin" value="2"<%= "2".equals(sIchbin) ? " checked" : "" %>> weiblich
</td>
</tr>
<tr>
<td><%= getStartErrorTag("qualifikation", vError) %>Qualifikation<%= getStartErrorTag("qualifikation", vError) %>:</td>
<td>
<select name="qualifikation" size="1">
<option value="">Bitte auswählen</option>
<option value="1"<%= "1".equals(sQualifikation) ? " selected" : "" %>>Anfänger</option>
<option value="2"<%= "2".equals(sQualifikation) ? " selected" : "" %>>Profi</option>
<option value="3"<%= "3".equals(sQualifikation) ? " selected" : "" %>>Guru</option>
</select>
</td>
</tr>
<tr>
<td><%= getStartErrorTag("kommentar", vError) %>Kommentar<%= getEndErrorTag("kommentar", vError) %>:</td>
<td><textarea name="kommentar" cols="20" rows="5"><%= sKommentar %></textarea></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Abschicken"></td>
</tr>
</table>
</form>
</body>
</html>
<%
}
%>
Wenn das Formular abgeschickt wurde unterzeihen wir jedes einzelne Feld einer Überprüfung, im Falle dass ein
Feld nicht unserer Vorgabe entspricht legen wir es in einem Vector ab. Ist der Vector nach der Validierung gefüllt
hat das Versenden des Formulars nicht geklappt und wir zeigen eine Fehlermeldung an und markieren die Falscheingaben
mit den beiden Funktionen getStartErrorTag und getEndErrorTag.
Diese schauen nach ob das Feld fehlerhaft ist und geben einen Markierungsanfangs- bzw. ende-Tag zurück. Die eMail-
Adresse überprüfen wir mit regulären Ausdrücken die sehr praktisch für Validierungen sein können.
Im nächsten Schritt geben wir noch ein paar Ausblicke und Anregungen.
|
weiter zum Step 4
|
|
Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir
betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten
haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf
dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer
Homepage angebrachten Links
Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig-
und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes.
Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen
obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung
einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung
bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.
Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries.
IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation.
Other trademarks and registered trademarks are the property of their respective owners.
|
|
|