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 <html:option> 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 <html:option> 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 <html:option> 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