Prinzip

Mit den Templtes wird das MVC-Pattern (Model-View-Controller) implementiert.

Templates implementieren den View-Layer und befinden sich in org.openz.view

Die Servlets implementieren den Controller-Layer und haben die Aufgabe, aus dem Model-Layer (das sind die XSQL-Data-Klassen) Daten zu Laden, den View-layer zu konfigurieren und die Daten mit dem View zur Anzeige zu bringen.

Templates werden als Static Methoden benutzt.

Templates arbeiten immer von innen nach außen. Hierzu ist es wichtig, sich die TAG-Hierarche von XML-Dokumenten zu verdeutlichen.

Zunächst wird ein Modell definiert. Es gibt zur Zeit Popups (ConfigureSelectionPopup) und Frame-Windows (ConfigureFrameWindow).

Dann wird ein Rahmen gesetzt (ConfigureTableStructure) dieser gibt die Anzahl der Columns vor – Das Modell der Fenster ist damit als Tabelle festgelegt.

Die einzelnen Zeilen werden mit den tr-Tags für Tabellen begonnen und beendet.

In die Einzelnen Zellen werden die Templates geladen (immer mit <Template>.doConfigure)

Die so gewonnenen XML-Abschnitte werden in den Rahmen, der Rahmen in das Fenster geladen.

So ergibt sich der fertige HTML-Response, der dann direkt an den Browser gesendet wird.

Das ganze kann rekursiv ausgeführt werden, so lassen sich praktisch vielfältigste GUI-Varianten erzeugen. Die Oberste ebene bleibt aber immer genau 1 Modell.

Alle daten für die Inhalte der Rahmen (Tabellen) werden aus den templates geladen. Gemeinsam sind allen Templates angaben zur Laufweite (leadingemptycols,usecols,colstotal).

Die spezifischen eigenschaften (readonly,required,fiedname) werden in der template Engine in entsprechende Validations übersetzt.

Labeltexte müssen nicht angegeben werden. Die Template Engine sucht automatisch Texte (und Übersetzungen) in

Application Dictionary || Setup || Element  ||  Element

Der Fieldname und DB Column Name müssen dabei übereinstimmen. Es ist wichtig bei Verwendung von Element

No automatic delete (Used in Code directly) 

anzuhaken, sonst wird das Element beim nächsten compile.complete gelöscht.

Umsetzung

 

  • Beispiel in org.openz.controller.TemplateTestServlet

Dieses kann in GUI-Template Test aufgerufen werden, wenn das Modul Testcases aktiviert ist

 

Scroll to Top