Die Common-Controls Tag Bibliothek

<forms:form>

Das Tag erzeugt ein Formular. Die Formularelemente werden im Tag-Body angegeben.
../images/images/formform_small.gif

Body content: JSP
Tag class: FormTag
Tei class: FormTei
 

[ Syntax ]

Standard Syntax
<forms:form
formid = "String"
type = "{search | create | display | edit | header | info}"
[ action = "String" ]
[ caption = "String" ]
[ cellWidth = "String" ]
[ detail = "String" ]
[ help = "String" ]
[ hideButtons = "Stringliste" ]
[ id = "String" ]
[ imagemap = "String" ]
[ labelPrefix = "String" ]
[ labelSuffix = "String" ]
[ labelWidth = "String" ]
[ locale = "String" ]
[ method = "{get | post}" ]
[ name = "String" ]
[ noframe = "Boolean" ]
[ permission = "ACL" ]
[ property = "String" ]
[ scope = "{any | page | request | session | application}" ]
[ style = "String" ]
[ styleClass = "String" ]
[ summary = "String" ]
[ transaction = "Boolean" ]
[ width = "String" ]
>
...Body Content...

</forms:form>
 

[ Attribute ]

AttributTypBeschreibungPflichtRTExp
actionString Gibt die Struts Action an, welche bei Kontrollelement Ereignissen aufgerufen werden soll.

Dieses Attribut muss nicht angegeben werden, wenn das Tag von einem Struts <html:form> Tag umschlossen ist. in diesem Fall wird der Name der Action über die Struts Formular Bean ermittelt.

Anmerkung: Die Action muss in einer der struts-config.xml Dateien deklariert sein.

 
captionString Die Hauptüberschrift des Formulars.

Überschrift und Detail können auch gemeinsam in der Form "title - detail" angegeben werden.

 
cellWidthString Gibt die Breite das Kontrollelement Bereiches für das gesamte Element an.

Anmerkung: Gültiger HTML Größenangabe.

 
detailString Die Detail Überschrift des Formulars.  
formidString Die eindeutige Identifikation des Formulars. Sie wird als Hiddenfield mit dem Namen formid in des Formular geschrieben und ist somit nach dem absenden des Formulars auf dem Server wieder verfügbar.

Das Framework kann über die formid den entsprechenden <formid>_onSubmit Event Handler aufrufen.

helpString Weist dem Kontrollelement einen Hilfe Bezeichner zu. Es wird ein Hilfe Symbol neben dem Kontrollelement angezeigt, welches bei einem Klick einen onHelp Event erzeugt. Der Bezeichner wird dabei als Parameter übergeben und kann somit zur Anzeige von kontextabhängigen Hilfetexten benutzt werden.

Das eigentliche Hilfesystem ist nicht Teil des Common-Controls Frameworkes, der onHelp Event kann jedoch zur Verankerung verwendet werden.

Für die Erzeugung des Hyperlinks zum Aufruf der Hilfe sind einige vordefinierte Framework Ressourcen zuständig. Diese kann der Anwendungsentwickler global oder auf Kontrollelement Ebene verändern:

Resource KeybeschreibungVorgabewert
fw.help.onclickEin optionaler onclick JavaScript Handler. Der Handler kann einen {0} Markup für den Hilfe Bezeichner enthalten-
fw.help.targetGibt an wo der Hilfe Hyperlink geöffnet werden soll_blank
fw.help.tooltiptooltip Text für den Hilfe Hyperlinkcontext help

Anmerkung: Der Hilfe Bezeichner wird von dem Common-Controls Framework an das Hilfesystem weitergegeben. Die Syntax und Semantik hängt daher von dem verwendeten Hilfesystem ab.

 
hideButtonsStringliste Mit diesem Attribut kann eine Liste von Schaltflächen ausgeblendet werden. Die auszublendenden Schaltflächen werden in einer Semikolon getrennten Liste angegeben.

Anmerkung: Mit Semikolon getrennte Liste von Schaltflächen Namen. Die Namen müssen dabei einer der ControlButton.getName() Konstanten entsprechen!

 
idString Weist dem Kontrollelement einen eindeutigen Bezeichner zu. Im Tag Body wird daraufhin eine Java Variable angelegt, auf die in Java Scriptlets zugegriffen werden kann. Diese Variable verweist auf die Kontrollelement Instanz (abgeleitet von Control).

Dieses Attribut wird meist in Verbindung mit dem type Attribut verwendet

Anmerkung: Da zur JSP Compile Zeit eine Java Variable mit diesem Bezeichner angelegt wird, muss hier ein String Literal (und keine Expression!) angegeben werden! Der Bezeichner muss den Regeln für gültiger Java Bezeichner folgen.

 
imagemapString Gibt den Namen einer Imagemap an, welche im Request abgelegt sein muss. Die in der ImageMap registrierten Images werden vor Spalten Labeln und Überschriften ausgegeben

Anmerkung: Unter dem Namen muss eine ImageMap im Request abgelegt sein.

 
labelPrefixString Gibt ein optionales Präfix (als HTML Literal) an, welches allen Labels des Formulars vorangestellt wird. Das Präfix kann auf Formularelement Ebene überschrieben werden.

Anmerkung: Eine HTML Zeichenkette, welche unverändert ausgegeben wird

 
labelSuffixString Gibt ein optionales Suffix (als HTML Literal) an, welches an alle Labels des Formulars angehängt wird. Das Suffix kann auf Formularelement Ebene überschrieben werden.

Anmerkung: Eine HTML Zeichenkette, welche unverändert ausgegeben wird

 
labelWidthString Gibt die Breite das Label Bereiches für das gesamte Element an.

Anmerkung: Gültige HTML Größenangabe.

 
localeString Weist das Kontrollelement an alle angegebenen Zeichenkettenliterale als Schlüssel für Textressourcen zu interpretieren.

Die folgenden Werte sind möglich:

  • "true" Die Lokalisierung ist aktiv und es wird die von Struts vergebene Ländereinstellung des angemeldenten Benutzers verwendet (wie in der HTTP Session unter dem Schlüssel org.apache.struts.action.LOCALE abgelegt).
  • "false" Die Lokalisierung ist nicht aktiviert. Alle Zeichenkettenliterale werden wie angegeben in die HTML Seite geschrieben.
  • ISO Code Die Lokalisierung ist aktiv und es wird die angegebene Sprache verwendet.

Bei aktivierter Lokalisierung werden die angegebenen Schlüssel von dem registrierten FrameworkAdapter (eine Interface Klasse) mit Hilfe der überschreibbaren localizeKey() Methode übersetzt. Der mitgelieferte StrutsFrameworkAdapter verwendet die in der struts-config.xml registrierten Message Resource Bundles für die Übersetzung des Ressourcen Schlüssels.

Zeichenketten die mit einem "#"-Zeichen beginnen werden grundsätzlich nicht lokalisiert (Das "#"-Zeichen wird jedoch abgeschnitten).

Alle Zeichenketten die von einem DataModel zurückgeliefert werden, sind ebenfalls von dem Lokalisierungsmechanismus ausgeschlossen, da dies in den Aufgabenbereich der Applikation fällt.

 
methodFormMethod Gibt die Methode an, mit welcher das Formular verschickt werden soll
  • get = Das Formular wrd über HTTP-Get abgeschickt. Alle Formularfelder werden in der URL übergeben.
  • post = Das Formular wrd über HTTP-Post abgeschickt. Alle Formularfelder werden im HTTP-Body übergeben.
 
nameString Gibt den Namen der Java-Bean - eine Instanz der Klasse Control. Die Java-Bean muss im angegebenen Scope abgelegt sein.

Wenn das Tag von einem Struts <html:form> Tag umschlossen ist, dann muss kein Bean Name angegeben werden. In diesem Fall wird die Java-Bean über ein Property der Struts Formular Bean gezogen.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
noframeBoolean Mit Hilfe dieses Attributes kann der Rahmen des Kontrollelementes unterdrückt werden. Eventuell notwendige Schaltflächen werden rechts über dem Kontrollelement angezeigt (abhängig von der verwendeten PainterFactory.  
permissionACL Mit diesem Attribut kann der Zugriff auf das Element beschränkt werden.

Berechtigungen werden über das Principal Objekt in der Benutzer Session geprüft. Das Principal Objekt wird mit der Methode SecurityUtil.registerPrincipal() in der Session registriert. Es wird vom Anwendungsentwickler durch Implementierung des Principal Interfaces zur Verfügung gestellt. Somit lassen sich sehr einfach beliebige Berechtigungssysteme mit dem Framework verbinden.

Berechtigungen werden immer in Form einer Access Control List (ACL) angegeben. Dabei handelt es sich um einen Ausdruck dessen Elemente Einzelberechtigungen sind. Das Framweork unterstützt die folgenden Berechtigungstypen, welche jedoch vom Anwendungsentwickler beliebig erweitert werden können:

Literal
true|false -> StaticPermission
Rolle
#rollenname -> RoleBasedPermission
Funktion
$funktionsname -> FunctionBasedPermission

Zur Formulierung der Ausdrücke kann die folgende Syntax verwendet werden:

PERMISSION_PREFIX
	: '#' | '$'

AND_OP
	: 'and' | '&' | '*'

XOR_OP
	: 'xor' | '^'

OR_OP
	: 'or' | '|' | '+'

UNARY_OP
	: '~' | '!'

permission
	: PERMISSION_PREFIX IDENTIFIER

primary_expr
	: permission
	| '(' expr_list ')'

unary_expr
	: primary_expr
	| UNARY_OP primary_expr

logical_and_expr
	: unary_expr
	| logical_and_expr AND_OP unary_expr

logical_xor_expr
	: logical_and_expr
	| logical_or_expr XOR_OP logical_and_expr

logical_or_expr
	: logical_xor_expr
	| logical_or_expr OR_OP logical_xor_expr

expr_list
	: logical_or_expr
	| expr_list ';' logical_or_expr
	| expr_list ',' logical_or_expr

Access Control Listen werden mit der statischen Methode AccessControlList.parse() eingelesen. Der Parser verwendet wiederum die statische Methode PermissionFactory.parse() um die einzelnen Permissions zu lesen. Der Anwendungsentwickler kann über die PermissionFactory eigene von Permission abgeleitete Klassen registrieren und so den Sprachumfang der ACL erweitern.

 
propertyString Gibt den Namen des Properties an, über welchen auf die Java-Bean zugegriffen werden soll. Dies ist in der Regel nur dann notwendig, wenn die Java-Bean mit einer Struts Formular Bean assoziiert ist.

Anmerkung: Es muss ein gültiger Java Bezeichner angegeben werden.

 
scopeHttpScope Dieses Attribut gibt den Scope an, in welchem die Java-Bean mit den eigentlichen Anzeigedaten zu finden ist.
  • any = Nach der Bean wird in jedem Scope gesucht.
  • page = Die Bean liegt im PageContext der JSP Seite.
  • request = Die Bean liegt im HTTP Servlet Request
  • session = Die Bean liegt in der HTTP Session
  • application = Die Bean liegt applikationsweit im Servlet Kontext
 
styleString Über dieses Attribut kann direkt ein HTML-style Attribut angegeben werden.

Anmerkung: Siehe HTML Dokumentation für das Attribut style.

 
styleClassString Über dieses Attribut kann direkt ein HTML-class Attribut angegeben werden.

Anmerkung: Siehe HTML Dokumentation für das Attribut class.

 
summaryString Gibt einen nicht sichtbaren Summary zu dem Kontrollelement auf der HTML Seite aus. Diese Information kann von speziellen Anzeigegeräten dargestellt werden - zum Beispiel als Sprachausgabe oder Braille Schrift.  
transactionBoolean Mit diesem Flag wird angegeben ob ein Transaction Token (siehe Struts Token Dokumentation) an alle Hyperlinks des Kontrollelementes angehängt werden soll.

Mit dem Transaction Token können Form Re-submissions (mehrfaches Absenden eines HTML Formulars) erkannt werden.

Funktionsweise: Das Transaction Token is ein "Stempel" mit welchem die Applikation jede generierte HTML Seite stempelt (es wird ein hidden Field bzw. zusätzliche URL Parameter für alle Hyperlinks erzeugt). Bei einem Server Request kann der vom Browser zurückgeliefert Stempel mit dem in der Session gespeicherten Wert verglichen werden. Wenn der Wert übereinstimmt, dann passt die Seite zum aktuellen Applikations Zustand.
Stimmt der Stempel nicht überein, dann sind Applikationszustand und Browser Inhalt asynchron und die Applikation kann auf diesen Fehler - wie auch immer - reagieren. Eine Abweichung entsteht immer dann, wenn der Anwender eine ältere Seite aus der Browser Historie absendet.

 
typeFormType Gibt den Formulartyp an. Der Formulartyp hat Auswirkungen auf die Darstellung und das Verhalten des Formulars. So werden bei einem display-Formular beispielsweise alle Formularelemente als Read-Only dargestellt.
  • search = Suchformular. Es wird ein entsprechedes Icon in der Titelzeile des Formulars angezeigt.
  • create = Eingabeformular zur Datensatzerzeugung.
  • display = Anzeigeformular. alle Formularelemente werden als Read-Only Felder dargestellt.
  • edit = Eingabeformular.
  • header = Spezielle Form eines Anzeigeformulars.
  • info = Formular zur Darstellung von Hinweistexten. Es wird ein entsprechendes Icon in der Titelleiste des Formulars angezeigt.
widthString Gibt die Breite des Formularfensters an. Die Breite kann absolut oder prozentual angegeben werden.

Siehe HTML-Dokumentation

 

[ Beispiel ]

Einfaches Suchformular mit zwei Eingabefeldern.


<%@ taglib uri="http://www.common-controls.com/cc/tags-forms"   prefix="forms" %>

<forms:form type="search" caption="Client Search" formid="frmSearch">
    <forms:text  label="Client"  property="client"  size="11"  maxlength="10"/>
    <forms:text  label="Name"    property="name"    size="25"  maxlength="80"/>

    <forms:buttonsection>
        <forms:button  name="btnSearch"  src="images/buttons/btnSearch1.gif"/>
    </forms:buttonsection>
</forms:form>