> Inhalt: Entwickeln von Web-Anwendungen mit Java-Server-Faces 

Tutorial: Einfache Benutzeroberfläche 

Tutorial:
Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) –
JSF-Code in der JSP-Datei verwenden und Java-Code in eigener Datei

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, daß Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2009-07-21

Voraussetzungen für das Verständnis dieses Dokuments:

Grundkenntnisse im Schreiben von Dokumenten im HTML-Format.
Elementare Kenntnisse der Programmiersprache Java.

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit:
Ca. 40 bis 90 Minuten; abhängig von der bereits vorhandenen Routine im Umgang mit Eclipse, beim Edititeren von HTML-Dateien und beim Codieren in Java
.

In diesem Schritt des Tutorials wird eine JSP-Datei (Java Server Pages) erstellt in die JSF (Java Server Faces) Kommandos integriert sind.
Diese JSF-Kommandos rufen Methoden einer Java-Klasse auf die die aktuelle Zeit abfragen und in verschiedenen sprach-spezifischen Formaten darstellen.

Ziele dieses Tutorial-Schrittes sind:

Eine schematische Darstellung der Funktion am Ende dieses Tutorial-Schrittes:

Inhaltsverzeichnis:

Voriger Schritt:  Ergänzen mit einer JSP-Datei und Packen in ein EAR (Enterprise-ARchive)

Dank für Vorarbeiten 
Vorbemerkung
 
Vorbedingungen 

Erstellen der JSP-Datei mit dem Dokument und integrierten JSF-Kommandos 
Verändern der Datei
index.html 
Zwischentest: Aufrufen der Web-Site im Browser 

Erstellen der Datei mit der Java-Klasse (
JSFTutorial01.java) 
Konfigurationsdatei
web.xml erstellen 
Konfigurationsdatei
faces-config.xml erstellen 

Erweitern der 'Packaging Configuration' für die Web-Archive- (WAR-) Datei 
Verzeichnis WEB-INF erstellen 
Verzeichnis classes erstellen 
Zu packende Dateien für die Java-Klassen festlegen 
Zu packende Konfigurationsdateien festlegen 
WAR- (Web-ARchive) Datei erstellen 

'Deploy' der WAR-Datei im Java Application Server (JAS) und Test 

Konfigurationsdatei
application.xml anpassen 
'Packaging Configuration' für die Enterprise-Archive- (EAR-) Datei 
'Deploy' der EAR-Datei im Java Application Server (JAS) und Test 

Umbenennen der EAR-Datei und neuer Test 

Hinweise zur Fehlersuche 

Gesamter Code am Ende des Schrittes 
Datei
index.html 
Datei
page_step03.jsp 
Datei
JSTutorial01.java 
Datei
web.xml 
Datei
faces-config.xml 
Datei
application.xml 

Weitere Schritte und verwandte Dokumentation 

Nächster Schritt: Ergebnisabhängige Web-Seiten 

Dank für Vorarbeiten

Eine besonders wertvolleAnleitung (in englischer Sprache) war der Blog von 'BalusC' (http://balusc.blogspot.com/2008/01/jsf-tutorial-with-eclipse-and-tomcat.html).

Darin wird beschrieben, wie der in Eclipse 3.4 verfügbare 'Wizard' die Entwicklung von JSF-Anwendungen unterstützt.
Der 'Wizard' beschleunigt die Entwicklung von JSF-Anwendungen; der Gebrauch ist aber erst sinnvoll wenn Sie mit den Grundlagen von JSF vertraut sind.

zum Inhaltsverzeichnis

Vorbemerkung

Obwohl Eclipse in 'deutscher Version' installiert werden kann, sind die Abbildungen in diesem Dokument mit der 'english Version' erstellt.
Grund ist, daß zum Zeitpunkt der Erstellung dieses Dokumentes (Oktober 2007) die Eclipse-Texte nur sehr unvollständig ins Deutsche übersetzt sind.
Damit ist (meiner Meinung nach)
1.) Eclipse in deutscher Version wesentlich schwerer verständlich ist als in englischer Version und
2.) wenn Eclipse weiter übersetzt wird, ist dieses Dokument stark abweichend von den dann vorhandenen deutschen Texten.

Für die JSF-Anweisungen innerhalb des HTML-Codes in der JSP-Datei und die Definitionen in den Dateien mit XML-Struktur kann keine Prüfung auf syntaktische Fehlerfreiheit durchgeführt werden.
Durch die teilweise kryptische Benennung von Variablen ist die Wahrscheinlichkeit von unerkannten Tippfehlern in diesen Dateien sehr hoch.
Diese Fehler führen oft zu schwer verständlichen Fehlermeldungen des Java Application Servers (JAS) oder verhindern ein korrektes Funktionieren des Ergebnisses ohne weitere Fehlermeldungen.

Hinweise zum Finden von Fehlern finden Sie im Abschnitt Hinweise zur Fehlersuche.

zum Inhaltsverzeichnis

Vorbedingungen:

zum Inhaltsverzeichnis

Erstellen der JSP-Datei mit dem Dokument und integrierten JSF-Kommandos

Das Erstellen von Verzeichnissen und Dateien wurde im Schritt 1 des Tutorials ausführlich beschrieben; in diesem Abschnitt beschränken sich die Beschreibungen auf eine Kurzfassung.

Die zu erstellende Datei hat den Namen page_step03.jsp. und ist im gleichen Verzeichnis wie die Datei 'index.html'.

  • Zum Erstellen der Datei wird das Stamm-Verzeichnis für die Web-Site (WebContent) mit der rechten Maustaste angeklickt und dann
    New > File ausgewählt.

  • Im anschließend geöffneten Fenster (New File) wird der Name der Datei festgelegt und das Fenster durch Anklicken des Schaltfläche [ Finish ] geschlossen.

  • Die erstellte Datei ist im 'Package Explorer' von Eclipse gelistet.

Sofern nicht der unter Tutorial: Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) – Erstellen von HTML-Dateien und Packen in ein WAR (Web-Archive) > Möglicher Fehler beim Editieren von Dateien im HTML-Format und Umgehung des Fehlers beschriebene Fehler vorhanden ist, wurde die Datei zum Editieren geöffnet.


     
 

Der HTML-Code mit integrierten Java-Anweisungen für diese Datei ist unter Gesamter Code am Ende des Schrittes > Datei page_step03.jsp dokumentiert und kann in die geöffnete Datei kopiert werden.

Anschließend eine kurze Erklärung der Kommandos die nicht HTML-Code sind; wenn Ihre Zeit knapp ist können Sie die Erklärung auch überspringen und gleich mit dem Abschnitt Verändern der Datei index.html fortsetzen.

zum Inhaltsverzeichnis

Verändern der Datei index.html

Damit die gerade erstellte JSP-Datei aufgerufen werden kann, muß in der Datei 'index.html' der passende Link gesetzt werden.
Weiters wird der Erklärungstext für diesen Schritt des Tutorials angepaßt.
Der geänderte HTML-Code für diese Datei ist unter
Gesamter Code am Ende des Schrittes > Datei index.html dokumentiert und kann in die geöffnete Datei kopiert werden. .

Anschließend eine kurze Erklärung des Links zur Datei 'page_step03.jsp'; wenn Ihre Zeit knapp ist können Sie die Erklärung auch überspringen und gleich mit dem Abschnitt Zwischentest: Aufrufen der Web-Site im Browser fortsetzen.

Fehlermeldungen einer falschen Spezifikation für die Referenzierung und weitere Hinweise zur Fehlerbehebung finden Sie unter Mögliche Fallstricke bei der Entwicklung von Anwendungen mit JSF (Java Server Faces) > Kryptische Meldung beim Aufrufen der 'verlinkten' Web-Seite.

zum Inhaltsverzeichnis

Zwischentest: Aufrufen der Web-Site im Browser

Um Überprüfen zu können ob die erstellten Dateien im HTML-Format korrekt sind wird jetzt ein Web-Browser verwendet.
Die Abbildungen sind mit 'Firefox' erstellt – es kann aber auch jeder andere Web-Browser benutzt werden.

Das Aufrufen einer Datei wurde bereits in den vorigen Schritten beschrieben; das Aufrufen der Datei 'index.html' und das Navigieren zu der in diesem Schritt erstellten JSP-Datei erfolgt ebenso.

zum Inhaltsverzeichnis

Erstellen der Datei mit der Java-Klasse (JSFTutorial01.java)

Das Erstellen von Verzeichnissen und Dateien wurde im Schritt 1 des Tutorials ausführlich beschrieben; in diesem Abschnitt beschränken sich die Beschreibungen auf eine Kurzfassung.

Die zu erstellende Datei hat den Namen JSFTutorial01.java (dieser Name wird durch den Namen der Java-Klasse festgelegt) und ist im Verzeichnis 'src/java'.

  • Zum Erstellen der Datei wird das Verzeichnis 'src/java' mit der rechten Maustaste angeklickt und dann
    New > Class ausgewählt.

  • Im anschließend geöffneten Fenster (New Java Class) werden der Name des Java-Packages (js_jsf01) und der Java-Klasse (JSFTutorial01) festgelegt.
    Alle anderen vorgegebenen Werte werden nicht verändert und das Fenster durch Anklicken des Schaltfläche [ Finish ] geschlossen.

  • Die erstellte Datei (mit der Java-Klasse) ist im 'Package Explorer' von Eclipse gelistet.

     
 

Der Java-Code ist unter Gesamter Code am Ende des Schrittes > Datei JSFTutorial01.java dokumentiert und kann in die geöffnete Datei kopiert werden.

Anschließend eine kurze Erklärung des Codes; wenn Ihre Zeit knapp ist können Sie die Erklärung auch überspringen und gleich mit dem Abschnitt Konfigurationsdatei web.xml erstellen fortsetzen.

zum Inhaltsverzeichnis

Konfigurationsdatei web.xml erstellen

Diese Datei enthält verschiedene Anweisungen an den Java-Application-Server (JAS); vor Allem welche Dateien mit Web-Inhalten auch Java-Server-Faces- (JSF-) Anweisungen enthalten.
Eine Erklärung der verwendeten Anweisungen finden Sie am Ende dieses Abschnitts.

Die Namen für Verzeichnis ('WEB-INF') und Datei ('web.xml') – bitte auch die Groß- und Kleinschreibung beachten – sind durch Normen vorgegeben und können nicht verändert werden.

Das Erstellen von Verzeichnissen und Dateien wurde im Schritt 1 des Tutorials ausführlich beschrieben; in diesem Abschnitt beschränken sich die Beschreibungen auf eine Kurzfassung.

Die zu erstellende Datei hat den Namen web.xml und ist im Verzeichnis 'WEB-INF'.

  • Zum Erstellen des neuen Verzeichnisses wird das Verzeichnis 'WebContent' mit der rechten Maustaste angeklickt und dann New > Folder ausgewählt.

  • Im anschließend geöffneten Fenster (New Folder) werden der Name des Verzeichnisses (WEB-INF) festgelegt.
    Das Fenster wird durch Anklicken des Schaltfläche [ Finish ] geschlossen.

  • Das erstellte Verzeichnis ist im 'Package Explorer' von Eclipse gelistet.

     
 

Die zu erstellende Datei hat den Namen web.xml und ist im Verzeichnis 'WEB-INF'.

  • Zum Erstellen der Datei wird das Verzeichnis 'WEB-INF' mit der rechten Maustaste angeklickt und dann
    New > File ausgewählt.

  • Im anschließend geöffneten Fenster (New File) wird der Name der Datei (web.xml) festgelegt.
    Das Fenster wird durch Anklicken des Schaltfläche
    [ Finish ] geschlossen.

  • Die erstellte Datei ist im 'Package Explorer' von Eclipse gelistet und der Editor hat die Datei für die Eingabe der Daten geöffnet.

     
 

Der Inhalt (XML-Anweisungen) ist unter Gesamter Code am Ende des Schrittes > Datei web.xml dokumentiert und kann in die geöffnete Datei kopiert werden.

Anschließend eine kurze Erklärung der XML-Elemente; wenn Ihre Zeit knapp ist können Sie die Erklärung auch überspringen und gleich mit dem Abschnitt Konfigurationsdatei faces-config.xml erstellen fortsetzen.

zum Inhaltsverzeichnis

Konfigurationdatei faces-config.xml erstellen

Diese Datei enthält folgende Anweisungen an den JAS (Java-Application-Server):

Der Namen für die Datei ('faces-config.xml') und das Verzeichnis ('WEB-INF') – bitte auch die Groß- und Kleinschreibung beachten – sind durch Normen vorgegeben und können nicht verändert werden.

Das Erstellen von Verzeichnissen und Dateien wurde im Schritt 1 des Tutorials ausführlich beschrieben; in diesem Abschnitt beschränken sich die Beschreibungen auf eine Kurzfassung.

Die zu erstellende Datei hat den Namen faces-config.xml und ist im Verzeichnis 'WEB-INF'.
Das Verzeichnis wurde bereits im vorigen Abschnitt erstellt.

  • Zum Erstellen der Datei wird das Verzeichnis 'WEB-INF' mit der rechten Maustaste angeklickt und dann
    New > File ausgewählt.

  • Im anschließend geöffneten Fenster (New File) wird der Name der Datei (faces-config.xml) festgelegt.
    Das Fenster wird durch Anklicken des Schaltfläche
    [ Finish ] geschlossen.

  • Die erstellte Datei ist im 'Package Explorer' von Eclipse gelistet und der Editor hat die Datei für die Eingabe der Daten geöffnet.

     
 

Der Inhalt (XML-Anweisungen) ist unter Gesamter Code am Ende des Schrittes > Datei faces-config.xml dokumentiert und kann in die geöffnete Datei kopiert werden.

Anschließend eine kurze Erklärung der XML-Elemente; wenn Ihre Zeit knapp ist können Sie die Erklärung auch überspringen und gleich mit dem Abschnitt Erstellen der 'Packaging Configuration' für die Web-ARchive- (WAR-) Datei fortsetzen.

Genereller Hinweis:
Im Beispiel dieses Schrittes ist die Folgeseite die gleiche wie die aufrufende Seite.

Deswegen ist in den XML-Elementen
<from-view-id> und <to-view-id> auch die gleiche Datei enthalten.
Eine korrekte Definition innerhalb des XML-Elementes ist aber notwendig, weil beim Anklicken des
<h:commandButton/> die jeweiligen Methoden der Java-Klasse (JSFTutorial01.java) aufgerufen werden müssen.

zum Inhaltsverzeichnis

Erweitern der 'Packaging Configuration' für die Web-ARchive- (WAR-) Datei

Abhängig von der installierten Version des JBoss-IDE Plubins sind die in diesem Abschnitt beschriebenen Konfigurationen möglicherweise schon automatisch erstellt.
Prüfen Sie bitte, ob eine beschriebene Konfiguration schon automatisch erstellt wurde bevor Sie die Teile dieses Abschnitts ausführen.

Das Erstellen der Konfiguration und das Packen wurde im Schritt 1 des Tutorials ausführlich beschrieben; in diesem Abschnitt beschränken sich die Beschreibungen auf eine Kurzfassung der möglicherweise zusätzlichen Konfigurationen.

zum Inhaltsverzeichnis

Verzeichnis WEB-INF erstellen

Dieses Verzeichnis in der Web-ARchive Datei enthält

Markieren Sie den Eintrag für die Web-Archive Datei und öffnen Sie durch einen Klick auf die rechte Maustaste das Kontext-Menu.

Daraus wird New Folder ausgewählt.

 
 

Im neuen Fenster ('Create a folder') wird der Name des neuen Verzeichnisses (WEB-INF) festgelegt.
Durch Anklicken der Schaltfläche
[  OK  ] wird der Eintrag für den neuen Ordner erstellt und das Fenster geschlossen.

  
 

Im Bereich 'Project archives' sehen Sie den neu erstellten Eintrag für das Verzeichnis.

  
 

zum Inhaltsverzeichnis

Verzeichnis classes erstellen

In diesem Verzeichnis sind die Java-Klassen, die aus den Java-Server-Pages aufgerufen werden, enthalten.

Markieren Sie den gerade erstellten Eintrag für das Verzeichnis 'WEB-INF' und öffnen Sie durch einen Klick auf die rechte Maustaste das Kontext-Menu.

Daraus wird wieder New Folder ausgewählt.

 
 

Im neuen Fenster ('Create a folder') wird der Name des neuen Verzeichnisses (classes) festgelegt.
Durch Anklicken der Schaltfläche
[  OK  ] wird der Eintrag für den neuen Ordner erstellt und das Fenster geschlossen.

(Ohne Abbildung)
Im Bereich 'Project archives' sehen Sie den neu erstellten Eintrag für das Verzeichnis.

  
 

zum Inhaltsverzeichnis

Zu packende Dateien für die Java-Klassen festlegen

Innerhalb des Verzeichnisses 'classes' müssen jetzt die Java-Klassen, die aus den Java-Server-Pages aufgerufen werden, festgelegt werden.

Markieren Sie den gerade erstellten Eintrag für das Verzeichnis 'classes' und öffnen Sie durch einen Klick auf die rechte Maustaste das Kontext-Menu.

Daraus wird wieder New Fileset ausgewählt.

 
 

Im neuen Fenster ('Fileset Wizard') wird zuerst festgelegt, in welchem Verzeichnis des Eclipse-Projects die vom Java-Compiler erstellten Dateien mit den Klassen enthalten sind.

Dieses Verzeichnis wurde im Abschnitt Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) – Erstellen von HTML-Dateien und Packen in ein WAR (Web-Archive) > Project in Eclipse eröffnen festgelegt.

Zum Auswählen des Verzeichnisses wird die Schaltfläche [  Workspace...  ] angeklickt.

  
 

Im anschließend erscheinenden Fenster ('Select a destination') manövrieren Sie bitte innerhalb des Eclipse-Project zum Unterverzeichnis gen/classes und bestätigen Sie diese Auswahl durch Anklicken der Schaltfläche [  OK  ].

Damit wird auch das Fenster wieder geschlossen.

  
 

Sie sehen, dass im Bereich 'Previev' die im Abschnitt Erstellen der Datei mit der Java-Klasse (JSFTutorial01.java) erstellte Java-Klasse zu sehen ist; also in die Web-Archive Datei aufgenommen wird.

Als Vorbereitung für weiter fortgeschrittene Strukturen wird jetzt noch festgelegt, dass ein kompletter Verzeichnisbaum mit allen Dateien in die Archiv-Datei aufgenommen wird.
Das passiert durch die Filter-Kriterien
**/* im Feld 'Includes'.

Die Eingaben werden durch Anklicken der Schaltfläche [  Finish  ] bestätigt.
Damit wird auch das Fenster geschlossen.



 

Im Bereich 'Project archives' sehen Sie den neu erstellten Eintrag für das Fileset.



 

zum Inhaltsverzeichnis

Zu packende Konfigurationsdateien festlegen

Zur Steuerung des JAS wurden in den Abschnitten Konfigurationsdatei web.xml erstellen und Konfigurationsdatei faces-config erstellen Konfigurationsdateien erstellt.
Diese müssen ebenfalls 'an richtiger Stelle' (innerhalb des Verzeichnisses 'WEB-INF') in die Archiv-Datei gepackt werden.

Markieren Sie den Eintrag für das Verzeichnis 'WEB-INF' und öffnen Sie durch einen Klick auf die rechte Maustaste das Kontext-Menu.

Daraus wird wieder New Fileset ausgewählt.

 
 

Im neuen Fenster ('Fileset Wizard') wird zuerst festgelegt, in welchem Verzeichnis des Eclipse-Projects die Konfigurationsdateien enthalten sind.

Zum Auswählen des Verzeichnisses wird die Schaltfläche [  Workspace...  ] angeklickt.

  
 

Im anschließend erscheinenden Fenster ('Select a destination') manövrieren Sie bitte innerhalb des Eclipse-Project zum Unterverzeichnis WebContent/Web-INF und bestätigen Sie diese Auswahl durch Anklicken der Schaltfläche [  OK  ].

Damit wird auch das Fenster wieder geschlossen.

  
 

Sie sehen, dass im Bereich 'Previev' die Konfigurationsdateien zu sehen sind; also in die Web-Archive Datei aufgenommen werden.

Als Vorbereitung für weiter fortgeschrittene Strukturen wird jetzt noch festgelegt, dass ein kompletter Verzeichnisbaum mit allen Dateien in die Archiv-Datei aufgenommen wird.
Das passiert durch die Filter-Kriterien
**/* im Feld 'Includes'.

Die Eingaben werden durch Anklicken der Schaltfläche [  Finish  ] bestätigt.
Damit wird auch das Fenster geschlossen.



 

Im Bereich 'Project archives' sehen Sie den neu erstellten Eintrag für das Fileset.



 

zum Inhaltsverzeichnis

WAR- (Web-ARchive) Datei erstellen

Zum erstellen der Web-ARchive Datei wird der Eintrag 'Java_JSF_01.war' markiert und durch einen Klick auf die rechte Maustaste das Kontext-Menu geöffnet.

Daraus wird wieder Build Archive (Full) ausgewählt.

 
 

zum Inhaltsverzeichnis

'Deploy' der WAR-Datei im Java Application Server (JAS) und Test

Eine ausführliche Anleitung mit Screenshots für die Übergabe der Archiv-Datei ('deploy') an verschiedene JAS finden Sie im Schritt (Tutorial: Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) - Erstellen von HTML-Dateien und Packen in ein WAR (Web-ARchive) > 'Deploy' der WAR-Datei im Java Application Server (JAS) und Test).

Möglicherweise tritt bereits beim 'deploy' der Datei ein Fehler auf.
Bedingt durch die 'Architektur' von Java Server Faces kann keine Syntaxprüfung durchgeführt werden und Tippfehler führen meist zu kryptischen Fehlermeldungen beim 'deploy' oder beim Aufruf der Web-Seite.

Eine Anleitung zur Eingrenzung von möglichen Fehlern finden Sie im Abschnitt Hinweise zur Fehlersuche.



Nach dem Aufruf der 'Anwendung' in einem Web-Browser wird das abgebildete Fenster angezeigt.

Klicken Sie den Link zur Seite page_step03.jsp mit dem integrierten Java Code an um zur Seite mit dem integrierten Java Code zu gelangen.

 
 

Als Ergebnis sind jetzt (die variablen Werte) aktuelles Datum und Uhrzeit und als Name 'FreundIn von JSF' zu sehen.
Aktuelles Datum und Uhrzeit wurden in der durch die JSF-Anweisungen aufgerufenen Methoden der Java-Klasse JSFTutorial01 ermittelt.
Ebenfalls in JSFTutorial01 ist der zu Beginn angezeigte Name 'FreundIn von JSF' festgelegt.

 
 

Durch Eingabe eines Namens und Anklicken der Schaltfläche [ Datum/Zeit anzeigen ] wird der Begrüßungstext und Datum/Zeit aktualisiert.

 
 

zum Inhaltsverzeichnis

Konfigurationsdatei application.xml anpassen

Diese Datei wurde bereits im vorigen Schritt des Tutorials (Ergänzen mit einer JSP-Datei und Packen in ein EAR (Enterprise-Archive) > Konfigurationsdatei application.xml erstellen) erstellt.
In diesem Schritt wird nur die Referenz auf die WAR-Datei aktualisiert.

Der JAS erwartet die Datei 'application.xml' im Verzeichnis META INF.

Zum Ändern wird die Datei zum Editieren geöffnet.

 
 

In der Datei werden die markierten Teile angepasst:

<?xml version="1.0" encoding="UTF-8"?>
<application>
  <display-name>
JavaScout JSF-Tutorial 01, Schritt 3</display-name>
    <module>
      <web>
        <web-uri>
Java_JSF_01.war</web-uri>
        <context-root>
JSFTutorial01c</context-root>
      </web>
    </module>

</application>

zum Inhaltsverzeichnis

'Packaging Configuration' für die Enterprise-ARchive- (EAR-) Datei

Die Konfiguration und das Packen ist gleich wie im vorigen Schritt des Tutorials (Ergänzen mit einer JSP-Datei und Packen in ein EAR (Enterprise-Archive) > Erstellen der 'Packaging Configuration' für die Enterprise-ARchive- (EAR-) Datei) beschrieben; deswegen sind keine Änderungen notwendig.

zum Inhaltsverzeichnis

'Deploy' der EAR-Datei im Java Application Server (JAS) und Test

Eine ausführliche Anleitung mit Screenshots finden Sie im vorigen Schritt des Tutorials (Tutorial: Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) – Ergänzen mit einer JSP-Datei und Packen in ein EAR (Enterprise-Archive) > 'Deploy' der EAR-Datei im Java Application Server (JAS) und Test).

Beachten Sie bitte, dass bei Glassfish die Datei 'Java_JSF_01.war' 'undeployed' werden muss bevor die Datei 'Java_JSF_01.ear' 'deployed' werden kann !

Möglicherweise tritt bereits beim 'deploy' der Datei ein Fehler auf.
Bedingt durch die 'Architektur' von Java Server Faces kann keine Syntaxprüfung durchgeführt werden und Tippfehler führen meist zu kryptischen Fehlermeldungen beim 'deploy' oder beim Aufruf der Web-Seite.

Eine Anleitung zur Eingrenzung von möglichen Fehlern finden Sie im Abschnitt Hinweise zur Fehlersuche.



Das im Web-Archive enthaltene 'Anwendungsprogramm' wird aufgerufen in dem in einem Webbrowser URL die TCP/IP-Adresse (im Beispiel: 192.168.0.99), der Port (Standardwert nach der Installation: 8080 für den Glassfish-JAS) und als 'Verzeichnis' JSFTutorial01c eingeben werden.
Dieser Wert wurde in der Datei 'application.xml' im XML-Element
<context-root> festgelegt.

Sie sehen die Startseite der in diesem Schritt erstellten Web-Anwendung.

Klicken Sie den Link zur Seite page_step03.jsp mit dem integrierten Java Code an um zur Web-Seite mit den integrierten JSF- (Java Server Faces-) Kommandos zu gelangen.

Der weitere Test verläuft wie im Abschnitt 'Dep

Der weitere Test verläuft wie im Abschnitt 'Deploy' der WAR-Datei im Java Application Server (JAS) und Test beschrieben.

 
 
 
 
 
 



zum Inhaltsverzeichnis

Umbenennen der EAR-Datei und neuerlicher Test

In den folgenden Schritten des Tutorials wird dieses (Eclipse-)'Project' weiterentwickelt und damit verändert.
Es ist sinnvoll, zu einem späteren Zeitpunkt das Ergebnis dieses Tutorial-Schritts wieder anzeigen zu können – z.B. um bei einer neuen Version des JAS prüfen zu können, ob bestehende Beispiele noch 'funktionieren' oder fehlerhaft verarbeitet werden.
Wenn der Test der bisher erstellten Enterprise-Archiv-Datei erfolgreich war wird diese Datei umbenannt. Damit kann Sie bei folgenden Schritten nicht mehr überschrieben werden.

Das Umbenenen der Datei wird gestartet indem in Eclipse die Datei mit dem Web-Archiv mit der rechten Maustaste angeklickt wird.

Aus dem angezeigten Kontext-Menu wird Refactor > Rename ausgewählt.

  
 

Es erscheint ein neues Fenster ('Rename Resource') in dem der neue Dateiname festgelegt werden kann.
Die Änderung des Dateinamens wird durch Anklicken der Schaltfläche [ OK  ] bestätigt.

  
 


Das 'deploy' ist abhängig vom verwendeten Java Application Server (JAS).

Beschreibungen mit Abbildungen finden Sie in vorhergegangenen Abschnitten dieses Dokuments:
'Deploy' bei JBoss  
'Deploy' bei Glassfish  

Bei beiden JAS muss die zuvor übergebene Enterprise-Archiv-Datei 'Java_JSF_01' wieder entfernt werden.
Grund dafür ist, dass der in der Datei 'application.xml' festgelegte Wert im Element
<context-root> (JSFTutorial01b) nur einmal innerhalb eines JAS vorkommen darf

Beim Aufrufen des 'Anwendungsprogramms' muss wieder als 'Verzeichnis' JSFTutorial01c eingeben werden.
Dieser Wert wurde in der Datei 'application.xml' im XML-Element
<context-root> festgelegt.

  
 



zum Inhaltsverzeichnis

Hinweise zur Fehlersuche

Im Gegensatz zum Codieren in Java kann bei den JSF-Anweisungen keine Syntax-Überprüfung durchgeführt werden.
Ein – vielleicht leicht zu übersehender – Tippfehler führt dazu, dass die Web-Seite nicht wie erwartet funktioniert oder schon beim 'deploy' an den JAS eine kryptische Fehlermeldung auftritt.

Als LeserIn dieses Tutorials haben Sie vermutlich überhaupt keine Erfahrung mit der Eingrenzung eines Fehlers – deswegen folgen leicht auszuführende Schritte zur Eingrenzung des Fehlers.

Prüfen des Java Application Server (JAS) mit fertigen WAR- und EAR-Dateien

Es ist nicht ausgeschlossen, dass die Installation oder Konfiguration des JAS das korrekte Verarbeiten von WAR- oder EAR-Dateien verhindert.
Um diese Fehlermöglichkeit auszuschliessen, können Sie folgende Dateien Herunterladen und zum Testen verwenden:
Java_JSF_01c.war  
Java_JSF_01c.ear  

Diese Dateien wurden mit der JBoss Version 5.0.1.GA und Glassfish Version 2.1 getestet – für andere JAS kann leider keine Garantie übernommen werden.
Beschreibungen für das 'deploy' und das erwartete Ergebnis finden Sie in den Abschnitten
'
Deploy' der WAR-Datei im Java Application Server (JAS) und Test bzw. 'Deploy' der EAR-Datei im Java Application Server (JAS) und Test.

Prüfen auf Tippfehler wenn Sie die Dateien nicht aus diesem Tutorial kopiert haben

Wenn Sie die Dateien selbst getippt und vielleicht gleich Modifikationen vorgenommen haben ist es sehr wahrscheinlich, dass ein oder mehrere Tippfehler der Grund für das Nicht-Funktionieren sind.
Bei den JSF-Anweisungen und den darin verwendeten Referenzen auf Java-Klassen und deren Methoden ist die Übereinstimmung von Groß- und Kleinschreibung wichtig !

Eine Liste möglicher Ursachen finden Sie im Dokument Mögliche Fallstricke bei der Entwicklung von Anwendungen mit JSF (Java Server Faces).

Kopieren Sie die Dateien aus diesem Tutorial und Prüfen Sie die jeweiligen 'Packaging configurations'

Wenn Sie bis jetzt die Ursache für den Fehler nicht gefunden haben empfehle ich folgendes Vorgehen:

zum Inhaltsverzeichnis

Gesamter Code am Ende des Schrittes

Datei index.html

Zusätzlich zum Code in Schritt 2 wird jetzt auf den Schritt 3 des Tutorials verwiesen und ein 'Link' zur JSP-Datei mit den integrierten JSF-Kommandos hinzugefügt.

<html>
<head>
  <title>
JavaScout :: Java-Server-Faces (JSF) Tutorial</title>
</head>

<body>
<h1>
Willkommen beim Schritt 3 des Tutorials zur Verwendung von Java-Server-Faces (JSF) !</h1>
<br>
Ziel dieses Schrittes ist, Anweisungen f&uuml;r JSF (Java Server Faces) innerhalb des HTML-Codes zu platzieren.
Mit diesen Anweisungen werden Daten von/zu einem Java-Objekt transferiert und Methoden des Objekts ausgef
&uuml;hrt.<br>
<br>
Das ist die
<i>index.html</i> Datei.<br>
<br>
<a href="sub_directory_1/sub_page_1.html">Link zur Seite <i>sub_page_1.html</i> im Verzeichnis <i>sub_directory_1.html</i>.</a><br>
<br>
<a href="sub_directory_2/sub_page_2.html">Link zur Seite <i>sub_page_2.html</i> im Verzeichnis <i>sub_directory_2.html</i>.</a><br>
<br>

<a href="page_step02.jsp">Link zur Seite <i>page_step02.jsp</i> mit dem integrierten Java-Code.</a><br>
<br>

<a href="page_step03.jsf">Link zur Seite <i>page_step03.jsp</i> mit Anweisungen f&uuml;r JSF (Java Server Faces).</a><br>
<b>Bitte beachten:</b><br>
Die in der Referenz zum Link angegebene Dateierweiterung muss
<b>.jsf</b> sein, auch wenn die Dateierweiterung der Datei .js<b>p</b> ist.
</body></html>

zum Inhaltsverzeichnis

Datei page_step03.jsp

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<f:view>
<html>
<head>
  <title>
JavaScout :: Java-Server-Faces (JSF) Tutorial / Schritt 3</title>
</head>

<body>
    <h1>
Willkommen beim Schritt 3 des Tutorials zur Verwendung von Java-Server-Faces (JSF) !</h1><br>
    <br>
    
Ziel dieses Schrittes ist, Anweisungen f&uuml;r JSF (Java-Server-Faces) <br>
    
in der Java-Server-Page- (JSP-) Datei zu integrieren.<br>
    <br>
    
Diese JSF-Anweisungen bewirken, dass der eingegebene Name durch die passende Methode <br>
    
der zugehörigen Java-Klasse verarbeitet wird und das Ergebnis in den entsprechenden Feldern<br>
    
angezeigt wird.<br>
    <br>
    
Das ist die <i><b>page_step03.jsp</b></i> Datei.<br>
    <br>
    <h:form
id="Step03Form">
      
Ihr Name: <h:inputText id="Name" value="#{SymbolicBeanName.personName}"/><br>
      <h:commandButton
action="getDateTime" value="Datum/Zeit anzeigen"/><br>
    </h:form>
    <br>
    <h3>
Hallo <h:outputText value="#{SymbolicBeanName.personName}"/>, willkommen hier!</h3><br>
    <br>
    <font color="blue">
Aktuelles Datum und Zeit des Servers ist:<br>
    <h:outputText
value="#{SymbolicBeanName.dateTimeFormatted}"/>. </font><br>
    <br>
    <a
href="index.html">Zur&uuml;ck zum Inhaltsverzeichnis durch Anklicken dieser Zeile.</a>
</body>
</html>

</f:view>

zum Inhaltsverzeichnis

Datei JSFTutorial01.java

package js_jsf01;
/*
 * package util enthält die Klasse für internes Datum und Zeit. */

import java.util.*;
/*
 * package und Klasse für sprachabhängige Anzeige von Datum und Zeit. */

import java.text.DateFormat;
/*
 * Deklaration der Klasse; diese muss 'public' sein sonst
 * können die Methoden der JSF-Klassen nicht darauf zugreifen. */
public class JSFTutorial01 {
/*
 * Deklaration der Variablen für den Namen der auf der Web-Seite eingegeben und
 * wieder angezeigt wird. Als 'private' deklariert weil über die JSF-Klassen der Zugriff darauf
 * nur über die get- und set-Methoden möglich ist.
 * Der Anfangswert wird zugewiesen um zu demonstrieren, dass dieser Wert auch bei der
 * anfänglichen Anzeige der Web-Seite angezeigt wird. */
  
private String Name = "FreundIn von JSF";
/*
 * Deklaration der Variablen für die Anzeige von Datum und Zeit. */
  
private String DateTimeFormattiert;
/*
 * Methode zum Übertragen des auf der Web-Seite eingegebenen Namens in die Variable dieser Klasse. */
  
public void setPersonName(String parmName) {
    
Name = parmName;
  
}
/*
 * Methode zum Übertragen des Namens in der Variable dieser Klasse auf das passende Feld der Web-Seite. */
  
public String getPersonName() {
    
return Name;
  
}
/*
 * Methode zum Übertragen der Zeichenkette mit Datum und Zeit in der Variable dieser
 * Klasse auf das passende Feld der Web-Seite.
 * Vor dem 'zurückliefern' der Zeichenkette wird der aktuelle Wert ermittelt und passend formattiert.
 * 
 * Dieser Wert wird nur vom Objekt dieser Klasse auf das passende Feld der Web-Seite übertragen -
 * deswegen ist keine zugehörige 'set'-Methode definiert. */
  
public String getDateTimeFormatted() {
/*
 * 'Holen' der aktuellen Zeit vom Computer auf dem der Java Application Server (JAS) ausgeführt wird. */

    Date DateTimeNow =
new Date();
/*
 * Bilden einer Zeichenkette mit Datum und Zeit in dem in Deutsch üblichen Format.
 * Dabei werden Datum und Zeit in der längsten möglichen Form (mit der meisten Information) angezeigt. */

    
DateTimeFormattiert = DateFormat.getDateTimeInstance(
        DateFormat.
FULL, DateFormat.LONG, Locale.GERMAN).format(DateTimeNow);
/*
 * 'Zurückliefern' der Zeichenkette mit formatiertem Datum und Zeit. */

    
return DateTimeFormattiert;
  
}
}

zum Inhaltsverzeichnis

Datei web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app
id="JSFTutorial01c" version="2.4"
         xmlns
="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemalocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>
JavaScout JSF Tutorial Step 03</display-name>

  <servlet>
    <servlet-name>
JSFTutorial01 Faces Servlet</servlet-name>
    <servlet-class>
javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>
1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>
JSFTutorial01 Faces Servlet</servlet-name>
    <url-pattern>
*.jsf</url-pattern>
  </servlet-mapping>


</web-app>

Für JBoss (getestet mit Version 5.0.1) ist das Weglassen der Anweisung xmlns="http://java.sun.com/xml/ns/j2ee" notwendig:
<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app
id="JSFTutorial01c" version="2.4"
         xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemalocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <display-name>
JavaScout JSF Tutorial Step 03</display-name>

  <servlet>
    <servlet-name>
JSFTutorial01 Faces Servlet</servlet-name>
    <servlet-class>
javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>
1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>
JSFTutorial01 Faces Servlet</servlet-name>
    <url-pattern>
*.jsf</url-pattern>
  </servlet-mapping>


</web-app>

zum Inhaltsverzeichnis

Datei faces-config.xml

<faces-config
  
xmlns="http://java.sun.com/xml/ns/javaee"
  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
  
version="1.2">

  <managed-bean>
    <managed-bean-name>
SymbolicBeanName</managed-bean-name>
    <managed-bean-class>
js_jsf01.JSFTutorial01</managed-bean-class>
    <managed-bean-scope>
request</managed-bean-scope>
  </managed-bean>

  <navigation-rule>
    <from-view-id>
/page_step03.jsp</from-view-id>
    <navigation-case>
      <from-outcome>
getDateTime</from-outcome>
      <to-view-id>
/page_step03.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>

</faces-config>

zum Inhaltsverzeichnis

Datei application.xml

<?xml version="1.0" encoding="UTF-8"?>
<application>
  <display-name>
JavaScout JSF-Tutorial 01, Schritt 3</display-name>
    <module>
      <web>
        <web-uri>
Java_JSF_01.war</web-uri>
        <context-root>
JSFTutorial01c</context-root>
      </web>
    </module>

</application>

zum Inhaltsverzeichnis

Weitere Schritte und verwandte Dokumentation

Dokument

Inhalt

Tutorial: Einfache Benutzeroberfläche mit JSF und Aufruf von Methoden eines EJB (Java_JSF_01) – Ergebnisabhängige Web-Seiten  

Im nächsten Schritt des Tutorials werden abhängig von der Uhrzeit verschiedene Web-Seiten als Folgeseiten nach der Seite mit der Eingabe aufgerufen.
Damit wird gezeigt, wie in der Java-Klasse von einem Ergebnis abhängig der Aufruf verschiedener Web-Seiten gesteuert wird.

zum Inhaltsverzeichnis