Struts Code Peaces – Element Allgemeines Das

Transcription

Struts Code Peaces – Element Allgemeines Das
Struts Code Peaces – <html:checkbox> Element
Es wird das Struts <html:checkbox> Element erläutert und anhand von kleinen Beispielen der
Umgang veranschaulicht.
Allgemeines
Autor:
Sascha Wolski
Sebastian Hennebrüder
http://www.laliluna.de/tutorials.html – Tutorials für Struts, EJB, xdoclet und eclipse.
Datum:
15. Februar 2005
Development Tools
Eclipse 3.x
MyEclipse 3.8.x
Application Server
Jboss 3.2.5
Es kann auch Tomcat genutzt werden.
Das <html:checkbox> Element
Das <html:checkbox> Element wird in Verbindung mit einer Eigenschaft vom Typ boolean
verwendet. Es wird zur Laufzeit ein <input> Element vom Typ checkbox gerendert.
Folgendes Beispiel zeigt den Quelltext der JSP Datei:
<html:checkbox property="checked">Label</html:checkbox>
Folgender HTML Quelltext wird zur Laufzeit von Struts ausgegeben:
<input type="checkbox" name="checked" value="on">Label
Attribute des <html:checkbox> Elements
Die wichtigsten Attribute werden kurz erläutert. Die vollständige Liste aller Attribute findet man in
der API zu der HTML Tag Biliothek von Struts.
http://struts.apache.org/userGuide/struts-html.html#checkbox
Name
disabled
indexed
name
property
value
Beschreibung
Deaktiviert das Element (true / false)
Nur gültig innerhalb eines logic:iterate Tags. Ist der Wert true, wird der Name des HTML
Elements als „id[3].property“ gerendert. id = Scope der Eigenschaft, property =
Eigenschaft. Die Zahl innerhalb der eckigen Klammern wird anhand des aktuellen Index
des Schleifendurchlaufes bestimmt.
Name des Bean das die Eigenschaft, die dem Element zugewiesen werden soll, enthält.
Name der Eigenschaft oder des Requestparameters das dem Element zugewiesen
werden soll.
Der Wert der nachdem Abschicken des Formulars übertragen wird. Wenn nicht
angegeben wird ein Standardwert „on“ gesetzt. Wenn angeben muss dieser Wert mit
folgenden Strings übereinstimmten („true“, „on“, „yes“).
Verwenden des <html:checkbox> Elements
Erstelle ein neues Struts Projekt um die Verwendung des <html:checkbox> Elements zu
veranschaulichen.
Erstellen einer Objektklasse
Erstelle eine neue Java-Klasse Customer im Package de.laliluna.tutorial.checkbox.object. Diese
Klasse repräsentiert einen Kunden (Customer).
Erstelle zwei Eigenschaften, name vom Typ String und checked vom Typ boolean und generiere
für jede Eigenschaft eine Getter- und Setter-Methode.
Definiere noch einen Konstruktor, der es erlaubt die beiden Eigenschaften beim Initialisieren der
Klasse zu setzen.
Die Objektklasse sieht wie folgt aus.
public class Customer {
private String name;
private boolean checked;
public Customer(){}
public Customer(String name, boolean checked){
this.name = name;
this.checked = checked;
}
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Erstellen einer neues Action Klasse
Lege eine neue Action Klasse ExampleAction im Package de.laliluna.tutorial.checkbox.action an.
public class ExampleAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
ExampleForm exampleForm = (ExampleForm) form;
}
}
return mapping.findForward("success");
Erstellen eines neuen FormBeans
Erstelle eine ActionForm Klasse ExampleForm im Package de.laliluna.tutorial.checkbox.form.
Definiere eine Eigenschaft checked vom Typ boolean, diese wird einem <html:checkbox> Element
zugewiesen und enthält den Wert (true / false) nachdem das Formular abgeschickt wurde.
Eine weitere Eigenschaft customers vom Typ Collection stellt eine Liste von Daten (Kunden)
bereit. Damit wird die Verwendung von <html:checkbox> Elementen innerhalb von Listen gezeigt.
Implementiere die reset() Methode der ActionForm Klasse und initialisiere die Eigenschaft
checked mit false. Innerhalb der reset() Methode stellen wir noch einige Dummy-Daten bereit und
initialisieren damit die Collection customers.
Folgender Quelltext zeigt die ActionForm Klasse
public class ExampleForm extends ActionForm {
private boolean checked;
private Collection customers;
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public Collection getCustomers() {
return customers;
}
public void setCustomers(Collection customers) {
this.customers = customers;
}
/**
* reset method
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping,
HttpServletRequest request) {
//reset properties
this.checked = false;
//initial the customers collection
customers = new ArrayList();
customers.add(new Customer("Marie", false));
customers.add(new Customer("Klaus", false));
customers.add(new Customer("Peter", false));
}
}
Erstellen der struts-config.xml
Öffne im Anschluss daran die struts-config.xml und definiere das FormBean und das
ActionMapping.
<struts-config>
<form-beans>
<form-bean name="exampleForm"
type="de.laliluna.tutorial.checkbox.form.ExampleForm" />
</form-beans>
<action-mappings>
<action
name="exampleForm"
path="/example"
scope="request"
type="de.laliluna.tutorial.checkbox.action.ExampleAction">
<forward name="success" path="/form/example.jsp" />
</action>
</action-mappings>
</struts-config>
Erstellen der JSP Datei
Erstelle im Verzeichnis /WebRoot/form/ eine JSP Datei example.jsp.
Öffne die JSP Datei example.jsp und füge folgenden Quelltext hinzu.
<%@
<%@
<%@
<%@
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"%>
taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic"%>
<html>
<head>
<title>example.jsp</title>
</head>
<body>
<html:form action="/example">
.... sample code ...
</html:form>
</body>
</html>
Füge innerhalb des <html:form> Elements das erste Beispiel ein.
Beispiel 1
Das erste Beispiel zeigt nur eine Checkbox. Mit dem Attribut property weisen wir die Eigenschaft
checked des Form-Beans zu. Wird die Checkbox vom Benutzer markiert und abgeschickt, so wird
der übertragene String („on“, „true“ oder „yes“) in einen boolean Wert umgewandelt und in der
Eigenschaft checked des Form-Beans gesetzt.
<h4>Simple use of &lt;html:checkbox&gt; Tag</h4>
<html:checkbox property="checked">Label</html:checkbox>
<br /><br />
<html:submit property="btnApply"/>
Beispiel 2
Im zweiten Beispiel wird die Verwendung eines <html:checkbox> Elements innerhalb eines
<logic:iterate> Tags gezeigt. Wir nutzen dazu die Eigenschaften customers vom Typ Collection
und verwen die darin befindliche Liste von Kunden.
Das Attribut name des <logic:iterate> Elements gibt das Bean an, in dem sich die Collection
befindet, in unserem Falle das Form-Bean exampleForm. Das Attribut property gibt den Namen
der Collection innerhalb des Beans an. Mit dem Attribut id definiert man einen Namen für eine
Variable, die das aktuelle Element der Collection bei jedem Schleifendurchlauf enthält.
Hinweis: Um eine Eigenschaften eines Elements innerhalb der Collection zu einem
<html:checkbox> Element zu zuweisen, muss das Attribut id des <logic:iterate> Tags gleich dem
Namen der Collection innerhalb des Form-Beans sein. Desweiteren muss das Attribut indexed des
<html:checkbox> Elements auf „true“ gesetzt werden.
Mit dem Attribute name des <html:checkbox> Elements wird auf den im <logic:iterate> Tag mit id
definierten Variabel gewiesen. Mit dem Attribut property wird auf die Eigenschaft checked der
Objekt-Klasse referenziert. Setze den Wert des Attributs indexed auf „true“, da sich das
<html:checkbox> Elements innerhalb eines <logic:iterate> Tags befindet.
<h4>Use of &lt;html:checkbox&gt; Tag inside a &lt;logic:iterate&gt;</h4>
<logic:iterate name="exampleForm" property="customers" id="customers">
<html:checkbox name="customers" property="checked" indexed="true">
<bean:write name="customers" property="name" />
<br />
</html:checkbox>
</logic:iterate>
<br />
<html:submit property="btnApply"/>
Das Projekt kann jetzt getestet werden. Dazu wird eine Jboss oder Tomcat Installation
vorausgesetzt. Deploye das Projekt und rufe es über folgende URL auf.
http://localhost:8080/CheckboxTag/example.do

Documents pareils