home  |  suche  |  kontakt/johner  |  institut 
studierende  |  tech-docs  |  mindmailer 

Hinweis: Blog

Bitte sehen Sie sich auch den Video-Blog zu JSF an.

Java Server Faces JSF

Java Server Faces sind eine Spezifikation eines Frameworks für Webanwendungen. Damit lassen sich die wesentlichen Aufgaben einer solchen Anwendung lösen:

     

  1. Beschreibung von Benutzeroberflächen
  2. Definition des Seitenablaufs ("screen flow")
  3. Verknüpfung der Benutzeroberfläschen (View) mit Daten (Model)

Bekannte Implementierungen dieser Spezifikation finden sich bei SUN und bei Apache.

Benutzeroberflächen

Java Server Faces sind nicht ausschließlich dazu gedacht, HTML-Seiten zu generieren, sondern auch andere Formate wie WAP oder XAML. Allerdings konzentrieren sich die bestehenden Implementierungen auf Browserklienten , also HTML-Seiten.

Eine JSF-Seite enthält keinen HTML-Code mehr, oder kann zumindest auf diesen verzichten. Das folgende Beispiel erläutert exemplarisch die JSF-Tags. Der vollständige Code der Seite kann hier heruntergeladen werden.

Konfiguration

Mit der Datei faces-config.xml konfigurieren Sie JSF. Darunter zählen insbesondere

     

  1. Die Zuordnung der BackingBeans mit den JSP/JSF-Seiten
  2. Der Screenflow aufgrund der Navigationsregeln
  3. Die Mehrsprachigkeit

Beispiel für eine solche Datei:

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
 <!-- i18n -->
 <application>
  <message-bundle>de.fhkn.sem6.fifa.Messages</message-bundle>
  <locale-config>
   <default-locale>de</default-locale>
   <supported-locale>en</supported-locale>
  </locale-config>
 </application>

 <!-- Managed Beans -->
 <managed-bean>
  <managed-bean-name>login</managed-bean-name>
  <managed-bean-class>de.fhkn.sem6.fifa.LoginBackingBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>

 <managed-bean>
...
 </managed-bean>
 
 <!-- Navigation -->
 <navigation-rule>
  <from-view-id>/usertickets.jsp</from-view-id>
  <navigation-case>
   <from-outcome>ticketLoeschen</from-outcome>
   <to-view-id>/usertickets.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
   <from-outcome>neuesTicket</from-outcome>
   <to-view-id>/newticket.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>

 <navigation-rule>
...
 </navigation-rule>
</faces-config>

 

 

Hinweise zu Messages

Die Messages werden missverständlicherweise in zweierlei Kontext genutzt.

1. Messages für Übersetzungen

Zum einen werden sie gebraucht, und das ist der wichtigere Teil, um die Mehrsprachigkeit zu erreichen. Bereits in der faces-config.xml (s.o.) wird festgelegt, dass die Anwendung mehrsprachig ist und welche Sprachen unterstützt werden. Nun gilt es, Dateien zu erstellen, welche die Übersetzungen enthalten. Diese Dateien heißen in unserem Beispiel Messages.properties, Messages_de.properties und Messages_en.properties. Die erste Datei enthält die Übersetzungen für den Fall, dass eine andere Sprache als Deutsch (_de) oder Englisch (_en) gewählt wird. Die Dateien sehen wie folgt aus

Messages_de.properties:

 

benutzername=Benutzername
passwort=Passwort
anmelden=Anmelden

 

Message_en.properties:

 

benutzername=User name
passwort=Password
anmelden=Login

 

Damit die Übersetzungen auf der Seite genutzt werden können, muss auf diese Properties-Dateien verwiesen werden, z.B. mit

 

<f:view>
  <f:loadBundle basename="de.fhkn.sem6.fifa.Messages" var="messages"/>    
   ...
  <h:outputText value="#{messages.benutzername}"/>
  ...
</f:view>

 

Bitte beachten Sie, dass damit nur statische Texte (Labels) übersetzt werden können. Die Message-Dateien müssen in dem src/classes Ordner liegen, der in faces-config.xml bzw. mit "loadBundle" angegeben wurde. In unserem Fall wäre das

<tomcat>/webapps/<nameapp>/WEB-INF/classes/de/fhkn/sem6/fifa

Wünscht man keine Übersetzung, so lässt sich die jsp-Seite vereinfachen zu

 

<f:view>
   ...
  <h:outputText value="Benutzername"/>
  ...
</f:view>

 

 

2. Ausgabe von Fehlermeldungen

Zum zweiten gibt es noch die Möglichkeit, mit

 

<h:messages style="color:red" layout="table"/> 

 

Fehlermeldungen des Backends, insbesondere Validierungsfehler, auf der HTML-Seite anzuzueigen. Das Tag heißt zwar messages, hat aber mit den Übersetzungen nichts zu tun.