Nutzung der Taglib

Vorteile

Die FormEngine bringt eine kleine Tag-Bibliothek mit, mit deren Hilfe Formulare initialisiert und ausgegeben werden können.

Die FormEngine-Tag-Library bietet folgende Vorteile:

  • Nutzung der FormEngine in Web-Frameworks (z. B. JSF, Spring), innerhalb anderer Tab-Bibliotheken und in JSPX-Vorlagen, die keinen Skript-Code in den Templates zulassen.
  • Die Kombination mit anderen Tag Libraries wie z. B. JSTL und die Nutzung der Expression Language (EL) kann konsequent in Ihrer Java-EE-Anwendung verfolgt werden.
  • Saubere Trennung von Logik und Ansicht

Deklaration

Zur Einbindung eines Formulars in ein Template sind zwei Taglib-Deklarationen notwendig. Bei der ersten handelt es sich um die FormEngine-Taglib selbst, bei der zweiten um eine Taglib, die für die Einbindung der nötigen JavaScript- und CSS-Ressourcen sorgt.

<%@ taglib prefix="fe" uri="http://www.imatics.de/forms" %>
<%@ taglib prefix="imx" uri="http://www.imatics.de/j2ee" %>

Initialisierung einer Formularinstanz

Mit dem fe:load-form-Tag wird eine Formularinstanz initialisiert und optional als Attribut in einem beliebigen Gültigkeitsbereich abgelegt (Attribute var und scope).

Das fe:load-form-Tag unterstützt derzeit nur die Angabe der Formulardefinition über eine Ressource-URL, sprich: die Festlegung der URL einer XML-Datei (Attribut resourcePath).

Über eingebettete Tags vom Typ fe:runtime-param lassen sich Laufzeitparameter für die Formularinstanz festlegen. Weiterhin können entweder ein Konnektor oder die Daten zur Initialisierung eines in der Formulardefinition angegebenen Konnektors übergeben werden.

<fe:load-form resourcePath="/pfad/zu/meinem/formular.xml" var="form"
    connectorData="${param['id']}">
  <fe:runtime-param name="myParamName" value="${myParamValueVar}"/>
</fe:load-form>

Ausgabe der HTML-Ressourcen

Nachdem das Formular initialisiert wurde, müssen die benötigten Ressource wie JavaScript- und CSS-Dateien im HTML-Kopf eingebunden werden. Dazu dient das Tag imx:print-request-includes.

Ausgabe des Formulars

Nun kann das oben initialisierte Formular im HTML-Body mit fe:render-form ausgegeben werden.

<html>
<head>
  <imx:print-request-includes/>
</head>

<body>
   <fe:render-form form="${form}"/>
</body>
</html>