JAX 2007: Apache Trinidad – JavaServer Faces Erster Klasse! (Matthias Weßendorf, Oracle Corp.)

Geschichte

Oracle-Schenkung (vormals Oracle ADF Faces). Incubator-Projekt beendet am 22.04.2007; jetzt Unterprojekt von MyFaces. Craig Mc Clannaghan Incubator Mentor.

Wiki

Komponenten

Ca. 105 Komponenten. HTML AJAX Renderkit.

Dialogframework. Testframework. Facelet-Unterstützung "out-of-the-box". Dazu sind die Maven-Facelet-Plugins erforderlich.

Tomahawk-Unterstützung. AJAX4JSF-, Seam-Unterstützung. Tobago schwierig.

tr:charts – SVG-Graphiken, ziemlich beeindruckend.

tr:breadCrumbs – "Hänsel u. Gretel-Navigation"

tr:document – individuelle Load-Manipulation.

tr:form – Anders als normal

tr:icon – Skin-Icon

tr:inputListOfValue action kann sich auf bestimmte Datei beziehen.

tr:inputSpinBox Zahlenwert in Mini-List, mit Tastatur änderbar

tr:legend – für Skin Icons

tr:navigationPane z.B. als Tab gerendert. Abstrakte Klasse aus dem Model überschreiben ("Swingy").

tr:navigationTree

tr:page – f. Grundstruktur d. Layouts

tr:panel – diverse Layout-Komponenten, Border-, Group-, Form-Layout (wie Layout-Mgr). (###?Tomahawk document?###)

tr:poll Fortschrittsbalken – ziemlich cool – partialTriggers="poll" setzen. So lange wie Transaktion nicht abgeschlossen, wird die Seite angezeigt. action="[Seite/Zustand nach Beendigung]"; Beispiel: Auch für regelmäßiges Pollen auf Daten möglich (z.B. Aktienticker). Auch z.B. zum Überprüfen aktiver Session.

tr:selectOne[...] – Zum Auswählen nur eines Elements (v.a. choice)

tr:selectManyShuttle – zwei ListBoxes mit Möglichkeit, Werte von einer in die andere zu übertragen.

tr:singleStepButton

tr:subform – Vorversenden von Formteilen

tr:treeTable

Table-Sortierung sehr einfach, ebenso Selektion.

tr:setActionListener (auch in JSF 1.2 default – für den Service Manager sehr interessant).

Projektstruktur

  • trinidad-api
    Basisklassen, abstrakte Klassen, Code nur für Trinidad-Entwickler interessant…
  • trinidad-impl
  • trinidad-build

JSF-Komponentenerstellung beschränkt sich auf das Schreiben lediglich der Rendererklasse (!). Facelets u.U. problematisch.

Framework

API. Vereinfachung der Komponentenerstellung. Dialogframework. Optimierte Komponentenspeicherung: UIXComponentBase benutzt direkt Map und delegiert Bean-Methoden.

Maven2-Plugins. TagDoc Personalisierung. Skinning-Dateien.

Dialogframework z.B: für Wizards. processScope zw. Request und Session. Events: launch und return.

HTML AJAX RenderKit

Partial Page Rendering. iframe anstelle von XmlHttpRequest-Objekt. Clientseitige Validierung, kein form.submit(). Wäre u.U. auch sehr interessant f. Service Manager.

autoSubmit – input Components f. action, partialSubmit – command, partialTriggers – für listener, bezieht sich auf partial/autoSubmit Komponente

PPR via Java API auch möglich (in action-Methode; RequestContext-Objekt von Trinidad nicht mit Faces-OBjekt verwechseln.).

RenderKit Extension – JS an Client senden (programmatisch).

RenderKit Skinning Architecture. CSS anlegen, registrieren in trinidad-config.xml und trinidad-skins.xml

Referenzieren auf Komponenten über Pseudoelemente, af|Komponente::Attribut { … }

Skinning-Verhalten über EL dynamisch änderbar!

Accessibility: default, inaccessible, screenreader (f. Blinde), right-to-left, debug-output

Demo-Anwendung http://code.google.com/p/facesgoodies.

Arbeiten mit Trinidad

Vergleich JSF-Standard ./. Trinidad. Sehr angenehm: tr-Tags mit anderen (f) einsetzbar.

JSF 1.2 nur im branch, wartet auf MyFaces update. Aber stable, mit "magic script" permanentes Merge, derzeit keine nightly builds, das Continuum derzeit down.

Gesamteindruck

Sehr mächtig, sehr traurig, dass das HTML AJAX RenderKit auf iframe basiert

  1. Keine Kommentare