Struts Code Peaces – Element Allgemeines Das

Transcrição

Struts Code Peaces – Element Allgemeines Das
Struts Code Peaces – <html:option> Element
Es wird das Struts <html:option> 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
Das <html:option> Element
Das <html:option> Element ist Bestandteil eines <html:select> Elements und kann auch nur
innerhalb dieses genutzt werden. Zur Laufzeit wird ein HTML <option> Element gerendert. Es
können beliebig viele <html:options> Elemente verwendet werden.
Folgendes Beispiel zeigt den Quelltext der JSP Datei:
<html:select property="selectedItem">
<html:option value="Marie">Marie</html:option>
<html:option value="Klaus">Klaus</html:option>
</html:select>
Folgender HTML Quelltext wird zur Laufzeit von Struts ausgegeben:
<select name="selectedItem">
<option value="Marie">Marie</option>
<option value="Klaus">Klaus</option>
</select>
Attribute des <html:option> Elements
Name
bundle
disabled
key
locale
style
styleId
styleClass
value
Beschreibung
Definiert den key für die MessageResources Instanze die genutzt werden soll.
„true“ setzt das Element auf inaktiv (disabled)
Wenn angegeben, definiert den Message Schlüssel innerhalb des Message Resource
Bundles, angegeben durch das Attribut bundle. Der Wert des Message Schlüssels wird
als Anzeigetext für den Benutzer ausgegeben. Wenn nicht definiert wird der Anzeigetext
im Body des <html:option> Tags angegeben.
Legt das Locale (Landspezifikation) die genutzt werden soll um den Message Schlüssel,
definiert mit dem Attribut key, fest. Wenn nicht angegeben wird das Standard-Local aus
der Session genutzt.
CSS Styles für dieses HTML Element
Identifikation des HTML Elementes (rendert ein id Attribut)
CSS Stylesheet Klasse für dieses HTML Element (rendert ein class Attribut)
Definiert den Wert des Elementes welches nachdem Abschicken der Seite übertragen
wird, wenn der Benutzer das Element ausgewählt hat.
Verwenden des <html:option> Elementes
Erstelle ein neues Struts Projekt um die Verwendung des <html:option> Elements zu
veranschaulichen.
Erstellen einer neues Action Klasse
Lege eine neue Action Klasse ExampleAction im Package de.laliluna.tutorial.option.action an.
Wir stellen einige Dummy-Daten als Array und Collection bereit, die wir später für die Ausgabe
benötigen.
public class ExampleAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
ExampleForm selectForm = (ExampleForm) form;
//create
String[]
array[0]
array[1]
array[2]
an dummy array
array = new String[3];
= "Maria";
= "Klaus";
= "Peter";
//create a dummy collection
Collection collection = new ArrayList();
collection.add("Maria");
collection.add("Klaus");
collection.add("Peter");
//set it in the request
request.setAttribute("array", array);
request.setAttribute("collection", collection);
}
}
return mapping.findForward("success");
Erstellen eines neuen FormBeans
Erstelle eine ActionForm Klasse ExampleForm im Package de.laliluna.tutorial.option.form.
Definiere eine Eigenschaft vom Typ String die später dem <html:select> Element zugewiesen
wird. Diese Eigenschaft beinhaltet dann den ausgewählten Wert aus der HTML Selectbox.
Erstelle für die Eigenschaft noch eine Getter- und Setter-Methode.
public class ExampleForm extends ActionForm {
private String selectedItem;
}
public String getSelectedItem() {
return selectedItem;
}
public void setSelectedItem(String selectedItem) {
this.selectedItem = selectedItem;
}
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.option.form.ExampleForm" />
</form-beans>
<action-mappings>
<action
name="exampleForm"
path="/example"
scope="request"
type="de.laliluna.tutorial.option.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 und füge folgenden HTML Quelltext ein.
<%@
<%@
<%@
<%@
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 Attribut property des <html:select> Elements weist auf unsere Eigenschaft selectedItem im
Form-Bean, die nachdem Abschicken des Formulars den ausgewählten Wert beinhaltet. Der Wert
wird durch das Attribut value des <html:option> Tags bestimmt. Wählt der User, zum Beispiel den
zweiten Eintrag (Klaus), so wird der Wert „Klaus“ für die Eigenschaft selectedItem des FormBeans gesetzt. Im Body des <html:option> Elements wird der Anzeigetext definiert.
<h4>Simple use &lt;html:option&gt; Tag</h4>
<html:select property="selectedItem">
<html:option value="Marie">Marie</html:option>
<html:option value="Klaus">Klaus</html:option>
<html:option value="Peter">Peter</html:option>
</html:select>
<html:submit/>
Beispiel 2
Bei diesem Beispiel verwenden wir ein Array, dass wir zuvor in der Action Klasse erstellt und in
den Request gespeichert haben. Damit ist es möglich dynamische, im Java-Code erstelle Inhalte,
in einer HTML Selectbox auszugeben. Wir loopen über das Array mit dem <logic:iterate> Tag, und
füllen das <html:option> Element. Den aktuelle Wert im Schleifendurchlauf enthält die Variable var
die mit dem Attribut id im <logic:iterate> Element angegeben wird.
<h4>Use &lt;html:option&gt; Tag within an iteration over an array</h4>
<html:select property="selectedItem">
<logic:iterate name="array" id="var" type="java.lang.String">
<html:option value="<%= var %>">
<bean:write name="var" />
</html:option>
</logic:iterate>
</html:select>
<html:submit/>
Beispiel 3
Das letzte Beispiel bezieht sich auf eine Collection. Der JSP Quelltext ist dabei identisch, da eine
Collection hier genau so behandelt wird, wie ein Array.
<h4>Use &lt;html:option&gt; Tag within an iteration over a collection</h4>
<html:select property="selectedItem">
<logic:iterate name="collection" id="var" type="java.lang.String">
<html:option value="<%= var %>">
<bean:write name="var" />
</html:option>
</logic:iterate>
</html:select>
<html:submit/>
Das Projekt kann jetzt getestet werden. Rufe das Projekt über folgende URL auf.
http://localhost:8080/OptionTag/example.do