Webgate Anywhere 4.1 - Das Kompendium
Design WebTML WebTML-Formulare

4.1.7 WebTML-Formulare

WebTML-Formulare ist ein Funktionalitätsblock von WebTML um Eingabeformulare in WebTML-Seiten zu integrieren, und die damit verarbeiteten Daten mit WGA-Datenbanken zu verbinden.

Die Strategie der Definition von WebTML-Formularen entspricht weitestgehend der von HTML-Formularen, zu welchen sie auf der Browser-Seite auch konvertiert werden. Ebenso wie bei HTML wird über einen speziellen Tag, hier <tml:form>, eine Formular-Definition direkt in der WebTML-Seite gestartet. Deren Inhalt wird dann über einen weiteren Tag, hier <tml:input>, mit Eingabefeldern ausgestattet.
<tml:form id="theform">

Name: <tml:input name="surname" type="text"/>

Vorname: <tml:input name="firstname" type="text"/>

</tml:form>

Bei <tml:form> ist das Attribut id, ansonsten optional, ein Pflicht-Attribut.

WebTML-Formulare unterscheiden sich von reinen HTML-Formularen im Wesentlichen durch folgende Eigenschaften:
Kapitelverzeichnis einblenden

4.1.7.1 Eingabefelder

Die Eingabefelder von WebTML-Formularen, definierbar über <tml:input>, haben ebenso wie HTML-Eingabefelder einen Namen (Attribut name) und einen Typen (Attribut type in Variationen, siehe <tml:input>). Der Typ bestimmt sowohl den Datentypen der Eingabe als auch die Darstellungsform, z.B. als Checkboxen, Auswahlfeld etc.

Anders als bei HTML werden bei Checkbox- und Radiobutton-Gruppen nicht die einzelnen Checkboxen bzw. Radio-Buttons definiert sondern die gesamte Gruppe gemeinsam, was in der Regel die Definition vereinfacht. Diese Gruppen werden WGA-intern als einzelne Felder betrachtet, die im Fall von Checkboxen Mehrfach-Werte annehmen können.

Die Einzelwerte die als Checkboxen oder Radio-Buttons ausgegeben werden sind über das Attribut options bzw. optionsitem zu definieren.
<tml:input name="choices" type="checkbox" options="Red, Blue, Green"/>

Fur jedes Eingabefeld gibt es drei Darstellungsmodi die über das Attribut mode gesteuert werden. Der normale Modus "edit" entspricht einem normal verwendbaren Eingabefeld. Der Modus "readonly" stellt das Eingabefeld deaktiviert dar. Der Modus "view" zeigt lediglich den Wert des Eingabefeldes an. Dieser Modus kann auch global für das gesamte Formular über das Attribut mode von <tml:form> eingestellt werden.

4.1.7.2 Datenbindung

WebTML-Formulare ermöglichen auf einem sehr einfachen Weg die Bindung an Daten aus einem Inhaltsdokument, dem Benutzerprofil des aktuellen Benutzers oder der Konfiguration des aktuellen WebTML-Portlets.

Schlüssel zu dieser Funktionalität ist das Attribut source am Tag <tml:form>. Hier kann angegeben werden zu welchem Dokument eine Bindung aufgebaut werden soll. Beispielsweise baut source="content" eine Bindung zum aktuell im Kontext des <tml:form>-Tags befindlichen Inhaltsdokument auf.

Nun muss der WebTML-Designer nur noch das Formular mit Input-Feldern füllen, welche dieselben Namen haben wie die Items im Inhaltsdokument, Benutzerprofil oder Portlet-Konfiguration. Hat ein Input-Feld denselben Namen wie ein Item des gebundenen Dokumentes so wird der Inhalt des Items automatisch in das Formular-Feld hineinkopiert.

Dies geschieht grundsätzlich bei der ersten Darstellung des Eingabefeldes. Danach ist das Formularfeld zunächst unabhängig vom Item. Es kann seinen Wert ändern ohne dass das Item sich ändert. Umgekehrt kann das Item seinen Wert ändern ohne dass das Formularfeld seinen Wert ändert. Das Formular hat somit den Status einer "Speicherkopie" des gebundenen Dokumentes die nun bearbeitet und wieder in das Dokument zurückgespeichert werden kann.

4.1.7.3 Verarbeitung auf dem Server

Zur Verarbeitung von WebTML-Formularen werden WebTML-Actions eingesetzt. Es gibt einige Default-Actions die häufig benötigte Funktionalitäten vordefinieren wie "$store", "$attach" oder "$reset" (siehe WebTML-Default-Aktionen), aber meistens wird man darauf nicht verzichten wollen, seine WebTML-Actions in Form von TMLScript genauer zu definieren.

Zur serverseitigen Repräsentation des WebTML-Formulars existiert das Objekt TMLForm. Es beinhaltet alle aktuell im Formular eingegebenen Daten und kann benutzt werden um die Daten zu modifizieren und sie gegebenfalls zu speichern:
<a href="<tml:url type="action">tmlform.storeInContent();<tml:url>">Speichern</a>

Das Objekt ermöglicht auch die Definition von versteckten Feldern. Anders als bei HTML-Formularen genügt es in WebTML dieses Feld serverseitig am TMLForm-Objekt zu definieren und es dann nicht zur Anzeige zu bringen indem man einfach kein gleichbenamtes <tml:input> ausgibt.

Der Wert des Feldes wird trotzdem konserviert da er in unsichtbaren und verschlüsselten Metadaten des Dokumentes mittransportiert wird. Dies ist sicherer als ein verstecktes Feld über den HTML-Typen "hidden" da es so nicht vom Benutzer modifiziert werden kann.


<< Labels Lokale Referenzen >>