Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java EE 7 Grundkurs

Resource Library Contracts

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Resource Library Contracts stellen einen Mechanismus zur Verfügung, um komplette Ressourcenstrukturen über einen Namen anzusprechen und diesen zur Laufzeit zu ändern. Dadurch kann das Design von Seiten automatisch oder manuell geändert werden.

Transkript

Neu in der Java EE7 sind sogenannte Resource Library Contracts. Hier geht es darum, dass eine Applikation die Möglichkeit haben sollte, komplett unterschiedliche Look and Feels zu verwalten und einfach zuzuweisen. In diesem Video werden wir uns mit Resource Library Contracts auseinandersetzen und wir werden klären, wie man sie verwenden kann. Wie bereits erwähnt, gibt es Resource Library Contracts erst neu in der Java EE-Version 7. Sie kombinieren Templates mit Ressourcen. Das bedeutet, wir haben die Möglichkeit, unterschiedliche Templates mit den jeweilig benötigten Ressourcen in der Applikation vorzuhalten. So ein Resource Library Contract kann auf die gesamte Applikation oder Teile davon angewandt werden. Views können selbst definieren, welchen Contract sie erfüllen. So ein Resource Library Contract befindet sich immer im Unterordner "contracts", oder im Unterordner "META-INF/contracts". Und damit wir diese Resource Library Contracts verwenden können, müssen wir sie in der "faces-config.xml"-Datei deklarieren. So ein Vertrag, also so ein Resource Library Contract, besteht immer aus mindestens einem Template. Dieses wird auch Declared Template genannt. Der Vertrag beinhaltet darüber hinaus alle benötigten CSS- und JavaScript-Dateien, außerdem Bilder und die anderen nötigen statischen Inhalte. Dies nennt man Declared Resources. So ein Vertrag bestehend aus Declared Template und Declared Resources, kann dann auf Seiten entweder statisch oder dynamisch angewandt werden. Statisch bedeutet, ein bestimmter Vertrag wird an eine bestimmte URL gebunden. Dynamisch bedeutet, dass das Ganze auch per Expression Language umsetzbar ist. Damit wir so einen Vertrag nutzen können, muss der zunächst in der "faces-config"- Konfigurationsdatei konfiguriert werden. Dies geschieht im XML oder über den Whizzard. Die Verwendung von solchen Resource Library Contracts ist dann sehr transparent. Das bedeutet, wir bekommen davon gar nichts mit. Wir rufen eine Ressource auf. Anhand der Pfadangabe oder anhand der Angabe in der View selber wir der Vertrag automatisch angewendet. Das bedeutet, das Declared Template wird geladen, und die Declared Resources werden von den verschiedenen Output-Anweisungen also outputScript, outputGraphicImage, outputStyleSheet zurückgegeben. Sehen wir uns einmal an, wie wir dies umsetzen können. Wir sehen hier eine Web-Applikation, die aus mehreren Seiten besteht. Wir haben im Wurzelverzeichnis eine Datei "Inhaltsseite.xhtml" und wir haben in einem Verzeichnis "geschuetzt" zwei weitere Inhaltsseiten, die jeweils mit einem Template verknüpft sind. Wenn wir uns diese Dateien anschauen: Sie verwenden jeweils eine Datei namens "Template.xhtml". Ebenfalls sind in diesem Projekt zwei Verträge deklariert. Es gibt den Ordner "contracts", und darin befinden sich die Unterordner "grau" und "rot". Diese Verträge sind Resource Library Contracts. Sie beinhalten selbst ein Template und alle benötigten Dateien. JavaScript- und Stylesheet-Dateien. Diese Contracts müssen nun in der "faces-config.xm"-Datei registriert werden. Zu diesem Zweck machen wir einen Doppelklick auf diese Datei und wechseln in den Reiter Tree. Hier gibt es den Bereich Application und dort gibt es den Unterordner Resource Library Contracts. Wenn wir hier einen Rechtsklick darauf machen, können wir ein sogenanntes Contract Mapping anlegen. Wir werden für beide Verträge, also "grau" und "rot" jeweils URL-Patterns anlegen, weil für alles, was unterhalb von geschützt liegt soll der Vertrag "rot" angewandt werden und für alles was sonst wo liegt, der Vertrag "grau". Das URL-Pattern ist also "/" "geschuetzt/*" und der Contract ist "rot". Finish. Und wir fügen noch einen zweiten Vertrag hinzu. Rechtsklick, wieder auf Resource Library Contracts und dann ein Contract Mapping definieren. Diesmal für alles andere. Also "/*" und der Contract hier ist "grau". Finish. Nachdem wir das gemacht haben, ist die Lösung schon einsatzbereit. Wenn wir uns jetzt die "inhaltsseite.xhtml" anschauen, sehen wir, dass diese auf ein Template verweist. Das Template, das genutzt werden wird liegt innerhalb des Contracts. Das heißt, es definiert dann selber, per OutputStylesheet und OutputScript-Angaben, welche Komponenten zu benötigen sind und definiert per "ui: insert" auch entsprechende Inhaltsbereiche. Rufen wir einmal die "inhaltsseite.xhtml" auf. Diese Seite wird grau dargestellt. Im Bereich "geschuetzt" gibt es ebenfalls zwei Seiten. Diese verwenden ebenfalls ein Template, nämlich "Template.xhtml". Allerdings wir über die Konfiguration in der "faces-config" angesagt, dass alles, was innerhalb von "geschuetzt" liegt, den Contract "rot" benutzt und nicht den Contract "grau". Im Contract "rot" ist ebenfalls ein Template deklariert. Dieses hat etwas weniger Inhaltsbereiche und im Stylesheet ist die Hintergrundfarbe vom Kopfbereich als Rot deklariert. Das muss uns jetzt gar nicht in der Tiefe interessieren. Wir rufen einfach mal die Inhaltsseite auf und werden feststellen, dass obwohl sie das gleiche Template referenziert, wir eine andere Ausgabe bekommen. Auch die zweite Seite verwendet automatisch das rote Template. Wenn wir dies ändern wollen, können wir das machen, indem wir oberhalb oder außenrum um "ui: composition", ein "f: view"-Element deklarieren. Dieses "f: view"-Element verfügt über eine Eigenschaft "contracts". Und hier können wir nun sagen, dass nicht der rote, sondern der graue Contract verwendet werden soll. Nachdem wir dies erledigt haben, die Applikation gespeichert und gegebenenfalls neu deployed haben, können wir die zweite Seite noch einmal aufrufen und nun wird diese Seite in Grau angezeigt. Das Spannende dabei ist letztlich, dass die Seite selber steuern kann, welches Template sie verwendet. Wenn man sich diesen Ausdruck anschaut, in der Seite selber, dann ist dieser Ausdruck aber auch mit der Expression Language zu versehen. Das bedeutet, wir können ihn auch an eine Bean binden. Das würde dann inhaltlich - es gibt jetzt diese Bean hier nicht - so aussehen, dass wir hier den Bean-Namen zum Beispiel angeben und dann eben fragen, welchen Contract wir verwenden wollen. Jetzt würde die Rückgabe der Methode "getContract" der Contracts-Bean verwendet werden. Das wäre eine dynamische Möglichkeit. Sie haben in diesem Video gesehen, wie einfach es ist, Resource Library Contracts zu verwenden. Es ist nötig, diese in den Unterordner "contracts" zu legen und in der "faces-config.xml"-Datei zu registrieren. Ansonsten verwenden unsere eigentlichen Facets ganz normale Deklarationen mit "ui: composition" und verweisen auf ein Template, was sich innerhalb eines Resource Library Contracts befindet. Möchte ein Facet eine andere Ausgabe wählen, also einen anderen Vertrag wählen, dann kann es dies über ein "f: view"-Element mit dem Attribut "contracts" regeln. Der Wert dieses Attributes kann entweder fest verdrahtet, oder dynamisch per Expression Language bestimmt werden.

Java EE 7 Grundkurs

Lernen Sie die Grundlagen der Programmierung mit Java EE 7 verstehen und anwenden.

6 Std. 4 min (44 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!