Folgende Versionen werden dabei verwendet: (In späteren Auflistungen von Bibliotheken werden alle Versionsnummern weggelassen)
- MyFaces 1.2.8
- Facelets 1.1.15.B1
- Richfaces 3.3.2
File --> New --> Dynamic Web Project (oder File --> New --> Other und dann unter Web/Dynamic Web Project) eine entsprechende Anwendung erstellt werden. (Als Servlet Version 2.5 angeben)
Die JSF Unterstützung kann ebenfalls über Eclipse hinzugefügt werden, da ich jedoch lieber selber eine Übersicht habe, welche Dateien wo erstellt werden, wird hier beschrieben, wie sie per Hand hinzugefügt wird.
JSF Unterstützung hinzufügen
Die wichtigste Konfigurationsdatei für JSF ist die faces-config-xml. Diese Datei wird im Ordner WEB-INF erstellt.In der einfachsten Form sieht diese wie folgt aus:<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xi="http://www.w3.org/2001/XInclude" xsi="http://www.w3.org/2001/XMLSchema-instance" schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
</faces-config>
Nachdem dies geschehen ist, muss die web.xml noch angepasst werden:
Um JSF zu verwenden wird das Faces Servlet eingebunden. Zusätzlich werden noch die passenden Mappings für das Servlet hinzugefügt.
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Soll in der Webanwendung z.B. mit xhtml Seiten gearbeitet werden, wird als Mapping *.xhtml angegeben.
Das Mapping von /faces/* ist wichtig, da einige Bibliotheken, die ich einbinde (z.B. Richfaces), bestimmte Resourcen über den Kontextpfad .../faces/... schickt.
Diese Angaben reichen aus, um der Webanwendung JSF beizubringen. Allerdings wird dann die Default - Implementierung des Servers für JSF verwendet, was im Falle von JBoss die SUN-RI Implemetierung ist.
MyFaces Implementierung verwenden
Um die MyFaces Implementierung von JSF zu verwenden, müssen folgende Dateien in den WEB-INF/lib Ordner kopiert werden (Download auf MyFaces).- myfaces-impl
- myfaces-api
- commons-beanutils
- commons-codec
- commons-collections
- commons-digester
- commons-discovery
- commons-logging
<context-param>
<description>MyFaces</description>
<param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
<param-value>true</param-value>
</context-param>
Der Context Parameter sorgt dafür, dass der JBos Server für diese Web Anwendung die JSF Implementierung nimmt, die im WEB-INF/lib Ordner liegt.
Zusätzlich muss noch der folgende Listener eingebunden werden:
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
Mit diesen Einstellungen verwendet die Webanwendung ab sofoert die Myfaces Implementierung.
Facelets hinzufügen
Die jar Datei zu Facelets kann hier runtergeladen werden. Um Facelets einzubinden, muss nur die folgende Datei in den WEB-INF/lib ordner kopiert werden:- jsf-facelets.jar
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
Als param-value wird dabei dieselbe Endung angegeben, die zuvor bereits für das Mapping des Faces Servlets verwendet wurde.
Des Weiteres muss in der faces-config.xml ein ViewHandler für facelets eingetragen werden. dazu wird unter dem faces-config Tag folgendes eingefügt:
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
</application>
Achtung: Wird vergessen der ViewHandler hinzuzufügen, kommt es beim Aufrufen einer *.xhtml Seite aus der Webanwendung zu einem Stackoverflow:
Servlet.service() for servlet Faces Servlet threw exception
java.lang.StackOverflowError
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
...
--> View Handler in faces-config.xml angeben!
Richfaces hinzufügen
Die Richfaces Bibliotheken können hier runtergeladen werden. Folgende Dateien müssen in den WEB-INF/lib Ordner kopiert werden:- richfaces-api
- richfaces-impl
- richfaces-ui
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
Fertig ist die Webapplikation !
Buchtip für Anwendungen mit JSF 2.0:
JavaServer Faces 2.0: Grundlagen und erweiterte Konzepte
Keine Kommentare:
Kommentar veröffentlichen