XForms und Java Frameworks

Entwickler sind noch zögerlich beim Einsatz von XForms, da die Browserunterstützung derzeit noch mangelhaft ist. In diesem Artikel geht es um ein Beispiel für die Verwendung von XForms mithilfe des Java Frameworks.

Die meisten Browser sollen irgendwann einmal XForms unterstützen, aber bis es so weit ist, ist die einzige verlässliche und skalierbare Methode für die Implementierung eine serverseitige Verarbeitung.

Was sind XForms?

XForms sind eine XML-Anwendung, die die nächste Generation von Formularen im Internet darstellt. Sie teilen traditionelle XHTML-Formulare in drei Teile auf:

  • XForms-Modell
  • Instanz-Daten
  • Benutzeroberfläche

Diese Aufteilung erlaubt die Implementierung starker Typisierung, Wiederverwendbarkeit, Trennung von Inhalt und Darstellung sowie Plattform-Unabhängigkeit. XForms beseitigt die Notwendigkeit des Scripting fast vollständig. Es dient als Schnittstelle für Online-Interaktionen zwischen einem Benutzer und einem anderen (üblicherweise entfernten) Agenten. Diese Interaktion wird durch einen XForms-Prozessor ermöglicht, ein Programm, das die XForms-Spezifikation implementiert. Eine solche Implementierung ist Chiba. Hier die einzelnen Schritte, die man bei der Arbeit mit Chiba durchführen muss. Man beachte, dass es bislang noch keinen Industriestandard für die Java-ähnlichen APIs von XForms zur XML-Verarbeitung (JAXP, JAXM etc.) gibt, weshalb die interne API von Chiba zukünftigen Änderungen unterworfen sein kann.

Das Formular-Modell

Zuerst muss man ein Formular-Modell erstellen, das die Logik des Formulars beschreibt (Listing A). Dieses Modell spezifiziert, welche Felder erforderlich sind, deren Format und an welche XML-Elemente oder Instanz-Daten sie gebunden sind. Das Beispielformular ist einfach. Es besteht aus einer Listbox mit mehreren Wahlmöglichkeiten und einem Textfeld. In einem Webbrowser ist die bequemste Möglichkeit der Darstellung dieser Steuerelemente eine Auswahlliste und ein Texteingabefeld . Das Formular sieht wie in Abbildung A aus.

Beispiel
Abbildung A

In dem Modell kann man optionale Default-Instanz-Daten erkennen, die im Element enthalten sind. Mit dieser Instanz wird der XForms-Prozessor initialisiert. Nachfolgend wird auch die andere Möglichkeit, die Instanz an den Prozessor zu übergeben erläutert, nämlich direkt von Java aus als DOM-Knoten. Falls die Instanz nicht initialisiert ist, sollte das Formular leer dargestellt werden.

Anzeige des Formulars

Als nächstes können das Formular angezeigt und die vom Benutzer eingegebenen Daten verarbeitet werden (Listing B). Dafür wird ein kleines Servlet geschrieben, welches das Formular mit der Methode doGet() erstellt und die Benutzerdaten in einem DOM-Dokument sammelt, wenn der Benutzer das Formular mit POST – also der Methode doPost() – abschickt.

Eines der primären Ziele des Chiba XForms-Frameworks ist eine Flexibilität, die auf Java-Interfaces beruht. Man muss dabei nur diejenigen Interfaces implementieren, die den eigenen Anforderungen am besten entsprechen. Ein Benutzer möchte vielleicht ein XForms-Modell in einer separaten Datei speichern, ein anderer vielleicht in einer Datenbank. Diese Flexibilität ist der Grund für die Verwendung von Connectors in Chiba. Wir nutzen einen BasicFileSystemConnector – einen Connector, der das XFormsConnector-Interface implementiert. Einer der Nachteile der Flexibilität von Chiba ist, dass die Konstruktion einer Instanz recht knifflig sein kann, weil höhere Flexibilität immer höhere Komplexität mit sich bringt. In diesem speziellen Beispiel wurde eine Chiba-Instanz mithilfe mehrerer zusätzlicher Wrapper-Klassen konstruiert, statt einfach ein Objekt zu erzeugen.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

ZDNet für mobile Geräte
ZDNet-App für Android herunterladen Lesen Sie ZDNet-Artikel in Google Currents ZDNet-App für iOS

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu XForms und Java Frameworks

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *