Auftrag. Common-Controls Guided Tour FormTag s



Ähnliche Dokumente
Common-Controls Guided Tour TabSetControl

Common-Controls Guided Tour ListControl

Common-Controls Guided Tour MenuControl

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Bedienung des Web-Portales der Sportbergbetriebe

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Einführung in Javadoc

ecaros2 - Accountmanager

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

MCRServlet Table of contents

Einführung in die Programmierung

WPF Steuerelemente Listbox, ComboBox, ListView,

Struts 2 Das Imperium schlägt zurück?

Erstellung von Reports mit Anwender-Dokumentation und System-Dokumentation in der ArtemiS SUITE (ab Version 5.0)

HTML5 HOCKEYSTICK EXPANDABLE BANNER v1.0

Es wird das Struts <html:option> Element erläutert und anhand von kleinen Beispielen der Umgang veranschaulicht.

Anwendungsbeschreibung an einem Beispiel

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

CodeSaver. Vorwort. Seite 1 von 6

Import und Export von Übergängern

Anleitung zur Verwendung der VVW-Word-Vorlagen

Synchronisations- Assistent

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

R-BACKUP MANAGER v5.5. Installation

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

Perceptive Document Composition

Zahlen auf einen Blick

ROFIN App Benutzerhandbuch. Version 1.0

Dokumentation. Black- und Whitelists. Absenderadressen auf eine Blacklist oder eine Whitelist setzen. Zugriff per Webbrowser

Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

f Link Datenbank installieren und einrichten

Produktschulung WinDachJournal

Leitfaden zur optimalen Darstellung von PayPal in Ihrem Online-Shop

Veröffentlichen von Apps, Arbeitsblättern und Storys. Qlik Sense Copyright QlikTech International AB. Alle Rechte vorbehalten.

Pfötchenhoffung e.v. Tier Manager

Vorabversion. Schulung am Homepage Administration und Pflege

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Password Depot für ios

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

Anleitung zur Anmeldung beim EPA zur Nutzung von OPS 3.1

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Scanning- Reservationslösung Gemeinden Benutzerhandbuch

Anleitung für die Formularbearbeitung

Common-Controls Guided Tour TreeListControl

Angaben zu einem Kontakt...1 So können Sie einen Kontakt erfassen...4 Was Sie mit einem Kontakt tun können...7

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

GITS Steckbriefe Tutorial

Systemvoraussetzung < zurück weiter >

White Paper - Umsatzsteuervoranmeldung Österreich ab 01/2012

Der lokale und verteilte Fall

Lehrer: Einschreibemethoden

Java Webentwicklung (mit JSP)

SMS/ MMS Multimedia Center

Mandant in den einzelnen Anwendungen löschen

Einstellungen der Anzeige

GEONET Anleitung für Web-Autoren

Benutzerhandbuch - Elterliche Kontrolle

Wie man Registrationen und Styles von Style/Registration Floppy Disketten auf die TYROS-Festplatte kopieren kann.

CC Modul Leadpark. 1. Setup 1.1 Providerdaten 1.2 Einstellungen 1.3 Qualifizierungsstati 1.4 Reklamationsstati 1.5 Design 1.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Tritt beim Aufruf ein Fehler aus, so wird eine MessageBox mit dem Fehlercode und der Kommandozeile angezeigt.

Anzeige des Java Error Stack in Oracle Forms

Aktions-Tool. Online-Verwaltung für Einrichtungen & Unternehmen. Online-Verwaltung für Einrichtungen & Unternehmen

> Internet Explorer 7

1 Schritt für Schritt zu einem neuen Beitrag

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Datei Erweiterungen Anzeigen!

Zwischenablage (Bilder, Texte,...)

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Dokumentation: Content App Framework

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Treppensoftware Programme. Hilfe - 3D Plus Online. konstruieren/präsentieren

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Die elektronische Rechnung als Fortsetzung der elektronischen Beauftragung so einfach geht es:

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

2015 conject all rights reserved

Kurzeinführung Excel2App. Version 1.0.0

Erstellen eines Screenshot

Dokumentation zur Versendung der Statistik Daten

Step by Step Softwareverteilung unter Novell. von Christian Bartl

SRM - Ausschreibung (Lieferant)

Lizenzierung von StarMoney 10 bzw. StarMoney Business 7 durchführen

Stammdatenanlage über den Einrichtungsassistenten

Einführung in TexMaker

Zur drittletzten Zeile scrollen

Bestellanleitung für SGS Studios

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich furtwangen.de furtwangen.

affilinet_ Flash-Spezifikationen

Browsereinstellungen für moneycheck24 in Explorer unter Windows

SMARTtill Server mit Manager

Hilfedatei der Oden$-Börse Stand Juni 2014

Anmerkungen zur Erstellung, dem automatisierten Versand und der automatisierten Auswertung von pdf-formularen

Transkript:

Auftrag Common-Controls Guided Tour FormTag s Version 1.6 - Stand: 14. Januar 2006

Herausgeber: SCC Informationssysteme GmbH 64367 Mühltal Tel: +49 (0) 6151 / 13 6 31 12 Internet http://www.scc-gmbh.com Product Site: http://www.common-controls.com Copyright 2000-2006 SCC Informationssysteme GmbH. All rights reserved. Published 2003 No part of this publication may be stored in a retrieval system, transmitted, or reproduced in any way without the prior agreement and written permission of SCC Informationssysteme GmbH. Java, JavaServer Pages are registered trademarks of Sun Microsystems Windows is a registered trademark of Microsoft Corporation. Netscape is a registered trademark of Netscape Communications Corp. All other product names, marks, logos, and symbols may be trademarks or registered trademarks of their respective owners. Guided Tour Form Tag ii

Inhaltsverzeichnis 1 Guided Tour FormTag s...1 1.1 Formulartypen...1 1.2 Gegenstand...2 1.3 Registrierung der Painterfactory...3 1.4 Ableitung der Action Klasse für den Struts-Adapter...3 1.5 Bereitstellung der Formulardaten...4 1.6 Festlegung des Formularaufbaus in der JSP-Seite...5 1.7 Implementierung der Callback-Methoden...7 1.8 Validierung und Fehlerpräsentation...8 1.9 Tour Ende...10 1.10 Exkurs Bereitstellung von Buttons mit Hover-Effekt...11 2 Glossar...12 Inhaltsverzeichnis iii

1 Guided Tour FormTag s 1.1 Formulartypen Mit den Common-Controls werden dem Pagedesigner Formulartypen geliefert, die immer wieder bei der Erstellung von Benutzeroberfläche benötigt werden. Durch die Verwendung der Formulartypen wird ein einheitliches Design innerhalb des Anwendung sichergestellt. Das Standarddesign kann auch an die eigenen Bedürfnisse (Corporate Identity) angepasst werden. Folgende Formulartypen stehen derzeit zur Verfügung: Eingabeformular Anzeigeformular Formular für Fehler- und Erfolgsmeldungen Suchdialog Kopfzeile Abbildung 1: Formulartypen Guided Tour FormTag s 1

1.2 Gegenstand In dieser Übung erstellen wir ein Eingabeformular und implementieren zwei Callback-Methoden für den Back- und Save-Button. Das Formular enthält zwei Pflichtfelder, die bei einer fehlerhaften Validierung zu einer entsprechenden Meldung führen sollen. Abbildung 2: Eingabeformular In dieser Übung werden folgende Punkte behandelt: 1. Auswahl des Designs für die Benutzeroberfläche 2. Erstellung der Actionklasse 3. Bereitstellung der Formulardaten 4. Festlegung des Formularaufbaus in der JSP-Seite 5. Implementierung der Callback-Methoden 6. Validierung und Fehlerpräsentation Guided Tour FormTag s 2

1.3 Registrierung der Painterfactory Zuerst erfolgt die Registrierung der Painterfactory. Sie legt fest, welches Design die Benutzeroberfläche erhält. Dies kann in der init()-methode des Frontcontroler-Servlets applikationsweit geschehen. 1 Wir wählen hier das Standarddesign, welches uns der DefaultPainter bereitstellt. import javax.servlet.servletexception import org.apache.struts.action.actionservlet; import com.cc.framework.ui.painter.painterfactory import com.cc.framework.ui.painter.def.defpainterfactory; import com.cc.framework.ui.painter.html.htmlpainterfactory; public class MyFrontController extends ActionServlet { public void init() throws ServletException { super.init(); // Register all Painter Factories with the preferred GUI-Layout // In this case we only use the Default-Layout. PainterFactory.registerApplicationPainter ( getservletcontext(), DefPainterFactory.instance()); PainterFactory.registerApplicationPainter ( getservletcontext(), HtmlPainterFactory.instance()); 1.4 Ableitung der Action Klasse für den Struts-Adapter In unserem Formular möchten wir die Detailinformationen zu einem Benutzer bearbeiten. Daher soll die Action-Klasse, welches das Befüllen unseres Formulares übernimmt, die Bezeichnung UserEditAction tragen. Die Actionklasse wird dabei von der Klasse FWAction abgeleitet, welche die Struts-Action Klasse kapselt und um Funktionalitäten des Präsentationsframeworks erweitert. Dabei wird anstelle der execute()- Methode die doexecute()-methode aufgerufen. [FWAction ist von org.apache.struts.action.action abgeleitet] Sie erhält beim Aufruf den ActionContext, über den der Zugriff auf weitere Objekte, wie das Request- und Response-Objekt gekapselt ist. import java.lang.ioexception; import com.cc.framework.adapter.struts.fwaction; import com.cc.framework.adapter.struts.actioncontext; public class UserEditAction extends FWAction { /** * @see com.cc.framework.adapter.struts.fwaction#doexecute(actioncontext) */ public void doexecute(actioncontext ctx) throws Exception { // Code follows in the next chapter 1 Wenn der Benutzer zwischen verschiedenen Oberflächen wählen kann, werden zusätzliche PainterFactorys registriert. Dies erfolgt dann nicht innerhalb des Servlets, sondern in der LoginAction mit PainterFactory.registerSessionPainter() im Session Scope. Guided Tour FormTag s 3

1.5 Bereitstellung der Formulardaten Zum Befüllen unseres Formulares dient uns eine FormBean, das UserEditForm, welches direkt von org.apache.struts.action.actionform abgeleitet werden kann. Die FormBean wird in unserem Beispiel vereinfacht mit unserem UserObjekt initalisiert, das zuvor die Daten zu dem im Request übergebenen Schlüssel aus einer Datenbank geladen hat. import java.lang.exception; import com.cc.framework.adapter.struts.fwaction; import com.cc.framework.adapter.struts.actioncontext; public class UserEditAction extends FWAction { /** * @see com.cc.framework.adapter.struts.fwaction#doexecute(actioncontext) */ public void doexecute(actioncontext ctx) throws Exception { String userid = ctx.request().getparameter("userid"); try { // Load the User User user = new User(userId); user.load(); // Initialice the Form with the User-Data UserEditForm form = (UserEditForm) ctx.form(); form.setuser(user); // In our Example we store the UserObject in our Session ctx.session().setattribute("userobj", user); catch (Throwable t) { ctx.addglobalerror("error: ", t); ctx.forwardbyname(forwards.back); // Call the JSP-Page with the Form ctx.forwardtoinput(); Guided Tour FormTag s 4

1.6 Festlegung des Formularaufbaus in der JSP-Seite Um die Formular-Tags auf einer JSP Seite einzusetzen, muss am Anfang der Seite die entsprechende Tag Library deklariert werden. Anschließend können die Formularelemente mit dem Präfix <forms:tagname /> verwendet werden. [Zudem muss die Aufnahme der Tag Bibliothek im Deployment-Deskriptor, der WEB- INF/web.xml Datei, erfolgen]. Unser Formular enthält neben Eingabefeldern und Auswahlboxen auch einen Abschnitt zur Gruppierung von Informationen und eine Button-Leiste. Die benötigten Elemente werden über die folgenden Tags definiert: Tag <forms:form/> <forms:plaintext/> /> <forms:select/> <base:options/> <forms:section/> <forms:buttonsection/> <forms:button/> <forms:message/> Beschreibung Definiert das Formular. Es wird die Überschrift festgelegt Dient zur Ausgabe von Text. Erzeugt ein Eingabefeld. Zur Kennzeichnung von Pflichtfeldern dient das Required-Attribut. Definiert eine Auswahlbox Definiert eine Optionsliste für eine Auswahlbox bereit Definiert und zeichnet einen Absatz Definiert eine Button-Leiste und legt einen Default-Button fest Zeichnet einen Buttton. Zeichnet einen Meldungsdialog. Über das Attribut severity= error wird der Dialog als Fehlerdialog klassifiziert. <%@ taglib uri="/web-inf/struts-html.tld" prefix="html" %> <%@ taglib uri="/web-inf/tlds/cc-forms.tld" prefix="forms" %> <%@ taglib uri="/web-inf/tlds/cc-controls.tld" prefix="ctrl" %> <forms:message severity="error" caption="error" formid="err"/> <html:form action="/sample101/useredit"> <forms:form type="edit" caption="user - Edit" formid="frmedit"> <forms:plaintext label="user-id" property="userid"/> label="first-name" property="lastname" size="45" required="true"/> label="last-name" property="firstname" size="45" required="true"/> <forms:select label="role" property="rolekey"> <base:options property="roleoptions"/> </forms:select> label="email" property="email" size="45"/> label="phone" property="phone" size="25" /> <forms:section title="address"> label="street" property="street" size="45"/> Guided Tour FormTag s 5

label="number" property="streetnumber" size="5"/> label="zipcode" property="zipcode" size="5"/> label="city" property="city" size="25"/> <forms:select label="country" property="countrycode"> <ctrl:options property="countryoptions" labelproperty="country"/> </forms:select> </forms:section> <forms:buttonsection default="btnsave"> <forms:button name="btnback" src="btnback1.gif"/> <forms:button name="btnsave" src="btnsave1.gif"/> </forms:buttonsection> </forms:form> </html:form> Das <form>-tag ist in unserem Beispiel in ein Struts <html:form>-tag eingebettet. Es erhält damit über die angegebene Action (/sample101/useredit) den Zugriff auf die Form-Bean, welche die Anzeigedaten bereitstellt. Das <form>-tag kann auch alleine ohne Struts <html:form> Tag verwendet werden, dann muss jedoch zusätzlich das action-attribut angegeben werden. Alle Tags der Common Controls Bibliothek arbeiten bei Bedarf im Verbund mit den Struts Tags! Guided Tour FormTag s 6

1.7 Implementierung der Callback-Methoden Der Back- und Save-Button in unserem Formular erzeugen jeweils ein Click-Event, auf das wir innerhalb unserer Action durch die Aufnahme zweier Callback-Methoden reagieren können. Der Name der Methode setzt sich dabei aus dem Namen der Schaltfläche und dem Suffix onclick zusammen. Formularbuttons müssen dabei mit dem Prefix btn benannt werden. Ansonst wird keine Callback-Methode aufgerufen. Der Button btnback führt damit zum Aufruf der Methode back_onclick. Der Methode wird dabei der FormActionContext übergeben, welcher den Zugriff auf das Request-, Session Objekt und die FormBean kapselt. import java.lang.exception; import com.cc.framework.adapter.struts.fwaction; import com.cc.framework.adapter.struts.actioncontext; import com.cc.framework.adapter.struts.formactioncontext; public class UserEditAction extends FWAction { /** * @see com.cc.framework.adapter.struts.fwaction#doexecute(actioncontext) */ public void doexecute(actioncontext ctx) throws Exception { // Code see above // ------------------------------------------------ // Event Handler // ------------------------------------------------ /** * This Method is called when the Back-Button is pressed. * @param ctx FormActionContext */ public void back_onclick(formactioncontext ctx) throws Exception { ctx.forwardbyname(forwards.back); /** * This Method is called when the Save-Button is pressed. * @param ctx FormActionContext */ public void save_onclick(formactioncontext ctx) throws Exception { // See next Chapter Guided Tour FormTag s 7

1.8 Validierung und Fehlerpräsentation Die Validierung der Daten erfolgt in unserem Beispiel mittels der validate()-methode in der FormBean. Die Methode wird innerhalb der UserEditAction aufgerufen, sobald der Save-Button auf unserem Formular angeklickt wurde. Das Formular kann vor dem Feld, in dem ein Fehler aufgetreten ist einen entsprechenden visuellen Hinweis generieren. Hierzu wird die Fehlermeldung unter Angabe des entspechenden Properties in die ActionErrors-Collection eingestellt. Die nachfolgende Validierung führt zu der Meldung Input required for Field: First Name und zeigt ein Warnzeichen for dem entsprechenden Feld an, wenn dort keine Eingabe erfolgt ist. import javax.servlet.http.httpservletrequest; import org.apache.struts.action.actionerror; import org.apache.struts.action.actionerrors; import org.apache.struts.action.actionmapping; public class UserEditForm extends UserDisplayForm { /** * @see org.apache.struts.action.actionform#validate() */ public ActionErrors validate(actionmapping mapping, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); if ("".equals(firstname) ) { errors.add("firstname", new ActionError("Input Required for Field: ", "First Name")); if ("".equals(lastname) ) { errors.add("lastname", new ActionError("Input Required for Field: ", "Last Name")); return errors; Guided Tour FormTag s 8

Die Validierung wird in der save-onclick()-methode angestoßen. Auftretende Fehler werden dabei in den FormActionContext eingestellt. Dies führt dazu, dass nach einer Rückkehr auf die Eingabeseite die entsprechenden Fehlermeldungen angezeigt werden. Wenn die Validierung erfolgreich war, können die Änderungen in die Datenbank übernommen werden. Bei diesem Vorgang können ebenfalls Fehler auftreten. Solche Fehler werden in unserem Beispiel nicht in der Eingabemaske angezeigt, sondern in der Maske, von der aus wir in den Bearbeitungsmodus verzweigt sind. Die Fehlermeldung wird dazu ebenfalls in den Kontext eingestellt und dann anschließend die entsprechende Action aufgerufen. Die CommonControls Trail-Version enthält dazu den ausführlichen Source-Code. Im Erfolgsfall wird eine entsprechende Meldung an den Anwender weitergegeben. Der Text wird hierzu über die Methode addglobalmessage() in den FormActionContext eingestellt. Anschließend wird die Eingabemaske wieder verlassen. import java.lang.exception; import com.cc.framework.adapter.struts.actioncontext; import com.cc.framework.adapter.struts.fwaction; import com.cc.framework.adapter.struts.formactioncontext; public class UserEditAction extends FWAction { // other code see above... public void save_onclick(formactioncontext ctx) throws Exception { UserEditForm form = (UserEditForm) ctx.form(); // Validate the Formdata ActionErrors errors = form.validate(ctx.mapping(), ctx.request()); ctx.adderrors(errors); // If there are any Errors return and display a Message if (ctx.haserrors()) { ctx.forwardtoinput(); return; try { // In our Example we get the User-Object from the Session User user = (User) ctx.session().getattribute("userobj"); populatebusinessobject(ctx, user); user.update(); catch (Throwable t) { ctx.addglobalerror("error: ", t); ctx.forwardbyname(forwards.back); return; // Generate a Success Message ctx.addglobalmessage("data updated: ", form.getusername()); ctx.forwardbyname(forwards.success); Guided Tour FormTag s 9

1.9 Tour Ende Das Beispiel hat gezeigt, wie sich durch den Einsatz von Form-Tag s Oberflächen schneller erstellen lassen. Dabei wird die Einhaltung eines einheitlichen Designs innerhalb der Anwendung gewährleistet. Es lassen sich aber auch andere Designs durch eine Anpassung der Painter realisieren. Dabei können verschiedene Designs parallel verwendet werden. Features Form-Tag s: Bereitstellung von zahlreichen Formularelementen (Text, Plaintext, Textarea, Select, Button, Buttonsection, File, Password, Radio, Spin, Description, Checkbox, Section) Gruppierungsmöglichkeit von Formularelementen Formularelemente können einfach mit einem Label, Beschreibungstext, Erforderliche Eingabe etc. in der JSP-Seite deklariert werden. Abbildung von Formular Ergeignissen auf Event-Handler in der Action Klasse Visualisierung bei Fehleingaben. Unterstützung von Hover-Effekten bei Buttons Design des Formulares in der JSP-Seite oder auch serverseitig definierbar. Design durch Painterfactory an eigenen StyleGuide (Corporate Identity) anpassbar. Gleiches Look and Feel in Microsoft InternetExplorer > 5.x und Netscape Navigator > 7.x Guided Tour FormTag s 10

1.10 Exkurs Bereitstellung von Buttons mit Hover-Effekt Zur Darstellung des Hover-Effektes, wird ein Button im aktiven Zustand und ein Button im selektierten Zustand benötigt. Der aktive Button wird dabei als gif-datei mit dem Präfix btn und dem Suffix 1.gif abgelegt (z.b. btnback1.gif). Für den Hover-Effekt wird ein Button mit der Endung 3.gif benötigt (z.b. btnback3.gif). Namenskonventionen und Zustände für Formualbutton: Zustand Beispiel Namenskonvention Aktiv btnxxx1.gif Inaktiv HOver Pressed btnxxx2.gif btnxxx3.gif btnxxx4.gif Die Bilder werden automatisch ausgetauscht, sobald der Mauszeiger über einen Formularbutton bewegt wird. Zuständig hierfür ist ein JavaScript Eventhandler, der für das MouseOver und MouseOut-Event in der Datei fw/def/jscript/controls.js registriert wird. Dieses Script wird von dem Default Painter automatisch in jede HTML Seite inkludiert 2. 2 Dies geschieht im Beispiel in der Schablonendatei jsp\template\main.jsp, welche von allen JSP-Seiten für das Seitenlayout verwendet wird. Mit der Zeile <util:jsp directive="includes"/> werden hier alle notwendigen Includes des Frameworkes eingebunden. Guided Tour FormTag s 11

2 Glossar C CC Common-Controls Glossar 12