Check the project stage in a JSF page

There a these common ways to detect in a JSF page if a project is in development stage or not:

<h:panelGroup rendered="${ (facesContext.application.projectStage eq 'Development')  ? true : false }">
  <h:outputText value="Development stage" />
</h:panelGroup>
 
<h:panelGroup rendered="${ facesContext.application.projectStage eq 'Development' }">
  <h:outputText value="Development stage" />
</h:panelGroup>
 
<h:panelGroup rendered="#{ facesContext.isProjectStage('Development') }">
  <h:outputText value="Development stage" />
</h:panelGroup>
 
<c:if test="${ facesContext.application.projectStage == 'Development' }">
  <h:outputText value="Development stage" />
</c:if>

JSF-Komponenten dynamisch erstellen

Variante 1:

import javax.faces.context.FacesContext;
import javax.faces.application.Application;
import javax.faces.component.html.HtmlInputText;
 
...
 
FacesContext context = FacesContext.getCurrentInstance();
Application app = context.getApplication();
HtmlInputText input = (HtmlInputText) app.createComponent(HtmlInputText.COMPONENT_TYPE);

Variante 2:

import javax.faces.component.html.HtmlInputText;
 
...
 
HtmlInputText input = new HtmlInputText();

Objekt aus JSF Custom Validator erhalten

Eine Dropdown-Liste in Form eines f:selectItems-Tags in JSF 2.2 kann einzelne Einträge nur in Form von Strings zurückgeben. Möchte man aber ein Objekt von einem Eintrag aus der Dropdown-Liste haben, so muss man einen JSF Converter implementieren.

Bei Verwendung eines Converters wird für jeden Eintrag aus der Dropdown-Liste die getAsString-Methode ausgeführt, welche das gebundene Objekt Objekt als Parameter erhält. Das gebundene Objekt kann dann zusammen mit einem Key über den FacesContext in der Session gespeichert werden.

Bei der Auswahl eines Elements im Dropdown-Element wird dann die getAsObject-Methode des Convertes aufgerufen. Die getAsObject-Methode enthält entgegen der getAsString-Methode nicht das direkte Objekt sondern nur den Key, den die getAsString zurückgibt. Der erhaltene Key kann aber genutzt werden, um das Objekt wieder aus der Session zu lesen. Der folgende Code zeigt diesen Ansatz:
Objekt aus JSF Custom Validator erhalten weiterlesen

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