Inhaltsverzeichnis

Transcription

Inhaltsverzeichnis
Struts Code Peaces – ActionForm
Diese Tutorial erläutert die Verwendung der Klasse ActionForm anhand eines Beispiels.
Allgemeines
Autor:
Sascha Wolski
Sebastian Hennebrüder
http://www.laliluna.de/tutorials.html Tutorials für Struts, EJB, xdoclet und eclipse.
Datum:
8. Februar 2005
Development Tools
Eclipse 3.x
Dependencies
Struts 1.1
Jboss oder Tomcat
PDF download: http://www.laliluna.de/download/struts-action-form-tutorial-de.pdf
Source download: http://www.laliluna.de/download/struts-action-form-tutorial-source.zip
Inhaltsverzeichnis
Struts Code Peaces – ActionForm...................................................................................................1
Allgemeines......................................................................................................................................1
Die ActionForm Klasse.....................................................................................................................1
Validierung von Eigenschaften....................................................................................................2
Initialisierung von Eigenschaften.................................................................................................2
Beispiel für die Verwendung eines ActionForm Beans.....................................................................2
Erstellen der ActionForm Klasse..................................................................................................3
Erstellen der Action Klasse..........................................................................................................3
Erstellen der JSP Datei................................................................................................................4
Erstellen des Form-Beans (struts-config.xml)..............................................................................4
Erstellen der Action (struts-config.xml)........................................................................................4
Initialisieren von Eigenschaften in ActionForm Klasse.................................................................5
Validierung der Eigenschaften in ActionForm Klasse..................................................................5
Erstellen einer Message Resource Datei.....................................................................................5
Testen des Beispiels....................................................................................................................6
Die ActionForm Klasse
Der wohl am häufigsten verwendete Typ eines Form-Beans ist die ActionForm. Dafür erstellt der
Entwickler eine Klasse die von der Klasse ActionForm erbt.
Beispiel:
public class ExampleForm extends ActionForm {}
Für die erstellte FormBean Klasse wird in der Struts Config ein Name festgelegt.
Beispiel:
<form-beans >
<form-bean name="exampleForm" type="my.package.ExampleForm" />
</form-beans>
Das Form-Bean kann danach in einer Action verwendet werden. Unten sehen Sie das
ActionMapping in der Struts Config.
Beispiel:
<action attribute="exampleForm"
input="/form/example.jsp"
name="exampleForm"
path="/example"
scope="request"
type="my.package.ExampleAction" />
Validierung von Eigenschaften
Die Klasse ActionForm bietet eine Methode validate(..) zur Validierung von Daten an. Es ist nicht
erforderlich diese Methode zu nutzen, sie ist Optional. Vorteil dieser Methode, sie wird nach dem
Abschicken einer Formularseite automatisch aufgerufen und abgearbeitet. Innerhalb der Methode
können dann die Daten geprüft und bei nicht zutreffenden, fehlerhaften Daten Fehler zurück
gegeben werden. Bei Rückgabe von Fehlern wird automatisch auf die Seite, die im input Tag
festgelegt ist, verwiesen, auf der man dann die entsprechenden Fehlermeldungen ausgeben kann.
Beispiel:
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
//Instanz von ActionErrors erzeugen
ActionErrors actionErrors = new ActionErrors();
//Validierung einer Eigenschaft
if(text.length() == 0)
actionErrors.add("example", new ActionMessage("Feld ist leer!"));
}
//Rückgabe der Fehler
return actionErrors;
Initialisierung von Eigenschaften
Die ActionForm Klasse bietet eine Methode reset(..) zum Initialisieren von Eigenschaften an.
Diese Methode wird beim Initialisieren des Form-Beans automatisch von Struts aufgerufen und es
können innerhalb der Methode, zum Beispiel, Standardwerte für Eigenschaften gesetzt werden.
Beispiel:
public void reset(ActionMapping mapping,
HttpServletRequest request) {
}
//Initialisieren der Eigenschaft text
text = "Hello World";
Beispiel für die Verwendung eines ActionForm Beans
Anhand einer Beispielanwendungen wird jetzt die Verwendung eines Action Form Bean
aufgezeigt.
Erstellen der ActionForm Klasse
Erstelle eine neue Klasse ExampleForm in einem Package.
(Bsp: de.laliluna.tutorials.actionform.form).
Die Klasse soll von der Klasse ActionForm erben.
Erstelle zwei Eigenschaften, name (Name) und age (Alter).
Für die Eigenschaften erstelle jeweils eine Getter- und Setter-Methode.
Die Klasse sollte wie folgt aussehen.
public class ExampleForm extends ActionForm {
//Eigenschaften der Klasse
private String name;
private int age;
}
//Getter und Setter Methoden
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Erstellen der Action Klasse
Erstelle im Package de.laliluna.tutorial.actionform.action neue Klasse ExampleAction.
Die Klasse erbt von der Klasse Action.
Implementiere die Methode execute(..).
Zuweisen der ActionForm
Zugriff und Ausgabe der Variablen name und age innerhalb der Action Klasse.
Der folgende Quellcode zeigt die Klasse ExampleAction
public class ExampleAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
//ActionForm zuweisen
ExampleForm exampleForm = (ExampleForm) form;
//Zugriff auf Eigenschaften der ActionForm
//Klasse innerhalb der Action Klasse
System.out.println(exampleForm.getName());
System.out.println(exampleForm.getAge());
}
return mapping.findForward("success");
}
Erstellen der JSP Datei
Erstelle im Verzeichnis ../WebRoot/form/ des Projektes eine neue JSP Datei mit dem Namen
example.jsp.
Der folge Quelltext zeigt die JSP Datei.
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for exampleForm</title>
</head>
<body>
<html:form action="/example">
<html:errors />
Name: <html:text property="name" /> <br>
Age: <html:text property="age" /> <br>
<html:submit value="Send"/>
</html:form>
</body>
</html>
Erstellen des Form-Beans (struts-config.xml)
Öffne die struts-config.xml und füge im oberen Teil, bei <form-bean>, folgende Zeilen ein.
(Hinweis: Wir beziehen uns immer auf das Package de.laliluna.tutorial.actionform)
Das Attribut name definiert den Namen unter dem das Form-Bean angesprochen werden kann.
type definiert den Typ des Form-Beans in unserem Fall unsere ActionForm Klasse ExampleForm.
<form-beans >
<form-bean name="exampleForm"
type="de.laliluna.tutorial.actionform.form.ExampleForm" />
</form-beans>
Erstellen der Action (struts-config.xml)
Erstelle in der struts-config.xml innerhalb von <action-mapping> die Action (ActionMapping) für die
Action Klasse. Weise der Action das Form-Bean exampleForm zu und erstelle ein Weiterleitung
auf die example.jsp Seite.
name legt das Form Bean fest, das die Action verwendet.
input weisst auf eine JSP Datei die nach fehlerhafter Validierung der Daten ausgerufen wird. In
unserem Fall ist es die gleiche JSP Datei, die auch zur Anzeige des Formulars verwendet wird.
type weist der Action die Action Klasse ExampleAction zu.
<forward ...> weisst auf die JSP Datei example.jsp.
<action-mappings>
<action
attribute="exampleForm"
input="/form/example.jsp"
name="exampleForm"
path="/example"
scope="request"
type="de.laliluna.tutorial.actionform.action.ExampleAction">
<forward name="showExample" path="/form/example.jsp" />
</action>
</action-mappings>
Initialisieren von Eigenschaften in ActionForm Klasse
Im nächsten Schritt bearbeiten wir die ActionForm Klasse ExampleForm und fügen die reset(..)
Methode hinzu. Innerhalb der reset(..) Methode initialisieren wird die beiden Eigenschaften der
ActionForm Klasse.
Folgender Quelltext zeigt die Methode reset(..) der Klasse ExampleForm.
public void reset(ActionMapping mapping,
HttpServletRequest request) {
//Initialisieren der Eigenschaften
name = "Adam Weisshaupt";
age = 23;
}
Validierung der Eigenschaften in ActionForm Klasse
Um die Daten nach der Eingabe zu überprüfen, zum Beispiel muss der Name mindestens aus 3
Zeichen bestehen und das Alter muss größer 0 sein, verwenden wir die Methode validate(..) der
ActionForm Klasse ExampleForm.
Folgender Quelltext zeigt die validate(..) Methode der Klasse ExampleForm.
public ActionErrors validate(
ActionMapping mapping,
HttpServletRequest request) {
//Instanz von ActionErrors erzeugen
ActionErrors actionErrors = new ActionErrors();
//Validierung der Eigenschaft 'name'
if(name.length() < 3){
actionErrors.add(ActionErrors.GLOBAL_ERROR, new
ActionError("error.name"));
}
//Validierung der Eigenschaft 'age'
if(age < 1){
actionErrors.add(ActionErrors.GLOBAL_ERROR, new
ActionError("error.age"));
}
}
//Rückgabe der Fehler
return actionErrors;
Erstellen einer Message Resource Datei
Die Message Resource Datei wird für die Ausgabe der Fehlermeldungen benötigt und enthält die
benötigten Texte für die Fehlerausgabe.
Erstelle im Package de.laliluna.tutorial.actionform eine neue Datei mit dem Namen
ApplicationResources.properties
Nähere Informationen zu Message Resource Dateien erhält man im MessageResource Tutorial
http://www.laliluna.de/struts-message-resources-tutorial-de.html
Füge die folgenden Zeilen in die Datei:
errors.suffix=<br>
error.name=Name must have minimum 3 characters
error.age=Age must be greater then 0
Öffne die struts-config.xml und füge die folgende Zeile hinzu:
<message-resources
parameter="de.laliluna.tutorial.actionform.ApplicationResources" />
Testen des Beispiels
Damit haben wir dir anhand eines kleinen Beispiels, die Verwendung der Klasse ActionForm näher
gebracht. Das Beispiel kann jetzt getestet werden. Rufen Sie die Anwendung mit folgendem Link
auf. (Achtung: wir setzten eine Standardinstallation von JBOSS oder Tomcat voraus.)
http://localhost:8080/ActionForm/example.do