JSF-Speicherort für Ressourcen (CSS / JS, …)

Damit in einer JSF-Seite verschiedene Dateien (Cascading Style Sheets, JavaScripts, …) aufgefunden und inkludiert werden können, müssen diese Dateien unter einem bestimmten Hauptordner abgelegt werden. Standardmäßig gültig sind dafür folgende Pfade:

src\main\webapp\resources
src\main\resources\META-INF\resources

Die jeweiligen Dateien können dann mit Angabe ihres Unterordners (library) und Namens (name) eingebunden werden:

Beispiel

  <h:outputStylesheet library="libs/pikaday/1.2.0" name="pikaday.css" />
  <h:outputScript library="libs/pikaday/1.2.0" name="pikaday.js" />

Handhabung von Formulareingaben mit JSF 2.2

Mit JavaServer Faces können bequem und leicht Formulare verwaltet werden. Als Beispiel soll ein Formular zur Registrierung eines Benutzers dienen. Damit die Eingaben in einem Formular serverseitig ausgewertet werden können, braucht jedes JSF-Formular neben seiner XHTML-Ansicht auch eine Instanz, an welche die Eingabedaten gekoppelt werden können. In Java EE 5 wurde eine solche Instanz als Backing Bean bezeichnet. Mit Java EE 6 hat man die Backing Bean dann als eine Variante der Managed Bean untergeordnet und mit Java EE 7 wird in Zukunft alles unter den Begriff Web Beans bzw. CDI fallen. Bevor wir uns aber mit CDI (Contexts and Dependency Injection) auseinandersetzen, möchte ich kurz zeigen, wie das Zusammenspiel aus Managed Bean und JSF-Formular aussieht.
Handhabung von Formulareingaben mit JSF 2.2 weiterlesen

Ressourcen in JSF-Seite verwenden

Bei der Entwicklung von Webseiten mit JavaServer Faces (JSF) ist es ratsam, alle einzubindenden Dateien (Bilder, Stylesheets, Sounds, etc.) über einen sogenannten Ressourcen-Ordner zu verwenden. In einer JEE-Webanwendung kann der Ordner für Ressourcen in der Datei web.xml mit folgender Deklaration festgelegt werden:

<context-param>
  <param-name>javax.faces.WEBAPP_RESOURCES_DIRECTORY</param-name>
  <param-value>/WEB-INF/resources</param-value>
</context-param>

Wird der Ordner für Ressourcen nicht direkt angegeben, existiert standardmäßig trotzdem einer an folgendem Ort: webapp/src/main/resources/META-INF/resources. Die Verwendung des Ressourcen-Ordners in JSF-Seiten hat den Vorteil, dass sich alle darin befindlichen Dateien durch einen ResourceHandler verwalten lassen. Außerdem besteht die Möglichkeit durch Konfiguration des Ressourcen-Ordners, alle Ressourcen auszulagern, etwa in einem Content Delivery Network (CDN).

Verwendet man den standardmäßig vorgegebenen Ressourcen-Ordner, so gibt es viele Wege, um Dateien daraus in einer JSF-Seite anzuzeigen. Das folgende Beispiel zeigt fünf verschiedene Möglichkeiten, um ein Bild einzubinden.
Ressourcen in JSF-Seite verwenden weiterlesen

Conditional Comments in JSF verwenden

Bei der Verwendung von Conditional Comments mit JavaServer Faces ist mir aufgefallen, dass diese Kontrollstrukturen maskiert werden und so nicht einsetzbar sind.

Aus der Anweisung:

<!--[if lte IE 8]>
  <script src="js/excanvas_r3-compiled.js"/>
<![endif]-->

wurde plötzlich:

<!--[if lte IE 8]&gt;
&lt;script src=&quot;js/excanvas_r3-compiled.js&quot;&gt;&lt;/script&gt;
&lt;![endif]-->

Die Lösung des Problems brachte das verbatim-Tag:

<f:verbatim>
  <!--[if lte IE 8]>
    <script src="js/excanvas_r3-compiled.js"></script>
  <![endif]-->
</f:verbatim>