Java Server Faces Urs Frei Inhalt n JSF

  • Slides: 31
Download presentation
Java. Server Faces Urs Frei

Java. Server Faces Urs Frei

Inhalt n JSF Funktionsweise ¡ ¡ n n n Rückblick JSP Bestandteile von JSF

Inhalt n JSF Funktionsweise ¡ ¡ n n n Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung) Apache My. Faces

Was ist JSF n n Ein Framework für die Entwicklung von Benutzerschnittstellen in Java-Web.

Was ist JSF n n Ein Framework für die Entwicklung von Benutzerschnittstellen in Java-Web. Applikationen Baut auf JSP auf JSF JSP n Sun Spezifikation

Erinnerungen an JSP n n n Nicht selten viel Java Code in der JSP

Erinnerungen an JSP n n n Nicht selten viel Java Code in der JSP Mühsamer Zugriff auf Javaobjekte Kommunikation mit Server nicht einfach

Bsp. JSP <%@ page language="java" %> <!DOCTYPE HTML PUBLIC "-//w 3 c//dtd html 4.

Bsp. JSP <%@ page language="java" %> <!DOCTYPE HTML PUBLIC "-//w 3 c//dtd html 4. 0 transitional//en"> <%fhsg. uebung 8. Address. Bean bean = (fhsg. uebung 8. Address. Bean)request. get. Attribute("address. Bean"); %> <html><head><title>Übung 8 - Adressverwaltung</title></head> <body bgcolor="#FFFFFF"><form> <h 1>Adresse anzeigen: </h 1> <p> Vorname: <%=bean. get. First. Name() %></br> Nachname: <%=bean. get. Last. Name() %></br> Adresse: <%=bean. get. Address() %></br> PLZ: <%=bean. get. Zip() %></br> Ort: <%=bean. get. City() %></br> Telefon: <%=bean. get. Phone() %></br> E-Mail: <%=bean. get. Email() %></br> <a href="controller? action=showlist">zurück</a> </form></body></html> </p>

JSF soll Arbeitserleichterung für Entwickler bieten, in: n Komponenten ¡ ¡ n Datentransfer ¡

JSF soll Arbeitserleichterung für Entwickler bieten, in: n Komponenten ¡ ¡ n Datentransfer ¡ ¡ n Konverter Validierung Zustandsspeicherung ¡ n Web Applikation wird zusammengebaut Möglich eigene Komponenten bauen Speicherung Applikationszustand Ereignisbehandlung ¡ Server kann Clientereignisse behandeln

Bestandteile für JSF n n n web. xml JSF Files faces-config. xml Java Klassen

Bestandteile für JSF n n n web. xml JSF Files faces-config. xml Java Klassen in der Java Bean Form Expression Language (EL)

JSF File n n Ist ein *. jsp mit taglib Was sind taglib? ¡

JSF File n n Ist ein *. jsp mit taglib Was sind taglib? ¡ ¡ Ermöglicht die Definition eigener Tags Verwendung: n n „import“ Definition Verwenden wie die üblichen Tags

Beispiel taglib Verwendung <%@ taglib uri="http: //java. sun. com/jsf/html" prefix="h" %> <%@ taglib uri="http:

Beispiel taglib Verwendung <%@ taglib uri="http: //java. sun. com/jsf/html" prefix="h" %> <%@ taglib uri="http: //java. sun. com/jsf/core" prefix="f" %> <html> <head> <title>Gespeichert</title> </head> <body> <f: view> <h: form> <h: output. Label>Die Daten sind gespeichert: </h: output. Label> </h: form> </f: view> </body> </html>

faces-config. xml n Managed-Beans ¡ n Navigationsregeln ¡ n Wie sollen sich die Komponenten

faces-config. xml n Managed-Beans ¡ n Navigationsregeln ¡ n Wie sollen sich die Komponenten zeichnen Validatoren ¡ n Welche Seite folgt auf welche Seite Renderer ¡ n Zugriff auf die Daten im Modell Welche Eingabe vom User ist gültig Konverter ¡ Wie sollen die Eingabedaten konvertiert werden

Managed-Beans (facesconfig. xml) n Klassen, die nach den Konventionen von Java Bean erstellt wurden

Managed-Beans (facesconfig. xml) n Klassen, die nach den Konventionen von Java Bean erstellt wurden ¡ n Member mit set und get Werden im faces-config. xml definiert ¡ Sehr einfacher Zugriff vom JSP

Expression Language (EL) n n Ermöglicht den Zugriff auf die Managed-Beans aus dem JSP

Expression Language (EL) n n Ermöglicht den Zugriff auf die Managed-Beans aus dem JSP Aufbau: „#{managed. Bean. Name. Member. Name}“

Voraussetzungen für JSF n Entwicklungsumgebung Eclipse ¡ ¡ n n WTP (Eclipse Project) für

Voraussetzungen für JSF n Entwicklungsumgebung Eclipse ¡ ¡ n n WTP (Eclipse Project) für JSF 1. 2 neuste Version nötig (I 20070313) Exadel Studio, Plugin für Eclipse (vom hören sagen) Java EE 5 mit Sun Application Server PE 9 Tomcat 5. 5 keine Unterstützung, da alte JSP Version

So einfach ist die Umsetzung!! n Beispiel „Anwendung“: Value. Changed. Listener Validator Datumskonverter Tabellenerzeugung

So einfach ist die Umsetzung!! n Beispiel „Anwendung“: Value. Changed. Listener Validator Datumskonverter Tabellenerzeugung Statische Navigation Dynamische Navigation

Web. xml <? xml version="1. 0" encoding="UTF-8"? > <web-app id="Web. App_ID" version="2. 4" xmlns="http:

Web. xml <? xml version="1. 0" encoding="UTF-8"? > <web-app id="Web. App_ID" version="2. 4" xmlns="http: //java. sun. com/xml/ns/j 2 ee" xmlns: xsi="http: //www. w 3. org/2001/XMLSchema-instance" xsi: schema. Location="http: //java. sun. com/xml/ns/j 2 ee/web-app_2_4. xsd"> <servlet-name>Faces Servlet</servlet-name> <servlet-class> javax. faces. webapp. Faces. Servlet</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> </web-app>

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

Input. jsp <%@ taglib uri="http: //java. sun. com/jsf/html" prefix="h" %> <%@ taglib uri="http: //java. sun. com/jsf/core" prefix="f" %> <html>… <body><f: view> <h 3>Bitte Name und Vorname eingeben</h 3> … Vorname: <h: input. Text value="#{person. first. Name}"/> <h: command. Button value="Zeigen" action="show"/> … </html>

Managed-Bean (facesconfig. xml) <managed-bean> <managed-bean-name>person </managed-bean-name> <managed-bean-class> ch. naturasoft. jsf. address. model. Person </managed-bean-class>

Managed-Bean (facesconfig. xml) <managed-bean> <managed-bean-name>person </managed-bean-name> <managed-bean-class> ch. naturasoft. jsf. address. model. Person </managed-bean-class> <managed-bean-scope>session </managed-bean-scope> </managed-bean>

Navigationsregeln n Zwei Arten ¡ ¡ Dynamisch Navigation Statisch Navigation

Navigationsregeln n Zwei Arten ¡ ¡ Dynamisch Navigation Statisch Navigation

Dynamische Navigation n JSP (Input. jsp) ¡ n Managed-Bean (java) ¡ n <h: command.

Dynamische Navigation n JSP (Input. jsp) ¡ n Managed-Bean (java) ¡ n <h: command. Button value="Speichern" action="#{saver. save. Data}"/> public String save. Data(){ return "ok"; } faces-config. xml ¡ <navigation-rule> <from-view-id>/Input. jsp</from-view-id> <navigation-case> <from-outcome>ok</from-outcome> <to-view-id>/Saved. jsp</to-view-id> </navigation-case> </navigation-rule>

Statische Navigation n JSP (Input. jsp) ¡ n <h: command. Button value="Zeigen" action="show"/> faces-config.

Statische Navigation n JSP (Input. jsp) ¡ n <h: command. Button value="Zeigen" action="show"/> faces-config. xml ¡ <navigation-rule> <from-view-id>/Input. jsp</from-view-id> <navigation-case> <from-outcome>show </from-outcome> <to-view-id>/Show. jsp</to-view-id> </navigation-case> </navigation-rule>

Value. Changed. Listener n JSP (Input. jsp) ¡ n <h: input. Text value="#{person. last.

Value. Changed. Listener n JSP (Input. jsp) ¡ n <h: input. Text value="#{person. last. Name}"> <f: value. Change. Listener type="ch. . . Name. Value. Changed. Lis"/> </h: input. Text> Java ¡ public class Name. Value. Changed. Lis implements Value. Change. Listener { public void process. Value. Change(Value. Change. Event arg 0)throws Abort. Processing. Exception { … } }

Validator n JSP (Input. jsp) <h: input. Text value="#{person. birthday}"> <f: validator binding="#{date. Validator}"/>

Validator n JSP (Input. jsp) <h: input. Text value="#{person. birthday}"> <f: validator binding="#{date. Validator}"/> </h: input. Text> n Java public class Date. Validator implements Validator { public void validate(Faces. Context f, UIComponent ui, Object o)throws Validator. Exception { … n faces-config. xml <managed-bean> <managed-bean-name>date. Validator</managed-bean-name> <managed-bean-class> ch. . . Date. Validator</managed-bean-class> <managed-bean-scope>none</managed-bean-scope> </managed-bean>

Konverter n n Vorgefertigter Konverter für Datum JSP (Input. jsp) <h: input. Text value="#{person.

Konverter n n Vorgefertigter Konverter für Datum JSP (Input. jsp) <h: input. Text value="#{person. birthday}"> <f: convert. Date. Time/> </h: input. Text> n Erzeugung eigener Konverter möglich

Tabellenerzeugung n JSP (List. jsp) <h: data. Table var="tmp. Person" value="#{model. persons}" border="1"> <h:

Tabellenerzeugung n JSP (List. jsp) <h: data. Table var="tmp. Person" value="#{model. persons}" border="1"> <h: column> <f: facet name="header"> <h: output. Text value="Vorname"/> </f: facet> <h: output. Text value="#{tmp. Person. first. Name}"/> </h: column> <f: facet name="header"> <h: output. Text value="Nachname"/> </f: facet> <h: output. Text value="#{tmp. Person. last. Name}"/> </h: column> </h: data. Table> n Voraussetzungen: alle Manages-Bean sind registriert (config-faces. xml)

Eclipse im Einsatz

Eclipse im Einsatz

My. Faces (Apache) n n Implementation des JSF Standards Mehr Komponenten Noch weitere Vereinfachungen

My. Faces (Apache) n n Implementation des JSF Standards Mehr Komponenten Noch weitere Vereinfachungen Hat div. Unterprojekte mit verschiedenen Weiterentwicklungen

Beispielkomponenten

Beispielkomponenten

Beispielkomponenten

Beispielkomponenten

Ausblick: n Web Applikationen erstellen mit ¡ ¡ ¡ n Apache My. Faces Ajax

Ausblick: n Web Applikationen erstellen mit ¡ ¡ ¡ n Apache My. Faces Ajax Spring (Hibernate) Ein Bsp. dazu findet Ihr im Buch

Links n n Eclpse www. eclipse. org WTP http: //www. eclipse. org/webtools/ Exadel-Studio www.

Links n n Eclpse www. eclipse. org WTP http: //www. eclipse. org/webtools/ Exadel-Studio www. exadel. com Plugin für Eclipse Java EE 5 java. sun. com

Referenzen n n JSF@Work ISBN 3 -89864 -401 -4 http: //java. sun. com/javaee/javaserverf aces/

Referenzen n n JSF@Work ISBN 3 -89864 -401 -4 http: //java. sun. com/javaee/javaserverf aces/ JSF Spezifikation http: //www. jsf-forum. de/ mit Tutorials http: //myfaces. apache. org/ Apache my. Faces http: //www. irian. at/myfaces. jsf