Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF.

Lignende præsentationer


Præsentationer af emnet: "1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF."— Præsentationens transcript:

1 1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF

2 2 JavaServer Faces Copyright © Lund & Bendsen Hvordan hænger JSF sammen? I dette kapitel ser vi på hvordan de forskellige dele af JSF hænger sammen og samarbejder på runtime. I løbet af kapitlet gennemgår vi en JSF- applikation. Du kan finde denne applikation i projektet: JSF-Ex-Intro-CustomerApplication

3 3 JavaServer Faces Copyright © Lund & Bendsen Managed JavaBeans Det store overblik JSP/Facelets med JSF-UI Faces Servlet Managed JavaBeans JSF TagLibs Validators Events Messages Forretningslogik, fx EJB eller Business Delegate faces-config.xml Browser http-req http-resp JSF-WebApp

4 4 JavaServer Faces Copyright © Lund & Bendsen Et eksempel på en JSF-applikation I det følgende gennemgås en simpel applikation, som simulerer oprettelsen af en kunde. hvis alt går godt ender vi her men af og til simulerer programmet en fejl og vi ender her i stedet

5 5 JavaServer Faces Copyright © Lund & Bendsen Et eksempel på en JSF-applikation Applikationen består af følgende elementer –web.xml, som bl.a. registerer FacesServlet –3 views (implementeret både som Facelets og JSP: createCustomer.xhtml/.jsp, viewCustomer.xhtml/jsp og error.xhtml/.jsp) –en customerBean, som repræsenterer en kunde –en faces-config.xml-fil

6 6 JavaServer Faces Copyright © Lund & Bendsen Sammenhængen faces-config.xml :CustomerBean name=”Peter Jensen”... modtager request instantierer propagerer parametre JSP-sider/ Facelets JSP-sider/ Facelets læser renderes tilgår context forwarder læser :FacesServlet Model View Controller

7 7 JavaServer Faces Copyright © Lund & Bendsen Views – createCustomer.xhtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Customer Application JSF (Facelets) Demo Create customer <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Customer Application JSF (Facelets) Demo Create customer

8 8 JavaServer Faces Copyright © Lund & Bendsen Views – createCustomer.jsp Customer Application JSF (JSP) Demo Create customer <h:commandButton action="#{customerBean.createCustomer}" value="Create Customer" /> Customer Application JSF (JSP) Demo Create customer <h:commandButton action="#{customerBean.createCustomer}" value="Create Customer" />

9 9 JavaServer Faces Copyright © Lund & Bendsen Views – viewCustomer.xhtml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Customer Application JSF (Facelets) Demo View customer <h:outputText value="!!!" rendered="#{customerBean.important}" style="color: red; font-weight: bold;" /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Customer Application JSF (Facelets) Demo View customer <h:outputText value="!!!" rendered="#{customerBean.important}" style="color: red; font-weight: bold;" />

10 10 JavaServer Faces Copyright © Lund & Bendsen Views – viewCustomer.jsp Customer Application JSF (JSP) Demo View customer <h:outputText value="!!!" rendered="#{customerBean.important}" style="color: red; font-weight: bold;" /> Customer Application JSF (JSP) Demo View customer <h:outputText value="!!!" rendered="#{customerBean.important}" style="color: red; font-weight: bold;" />

11 11 JavaServer Faces Copyright © Lund & Bendsen Model - CustomerBean.java JSF kan automatisk propagere data mellem UI-komponenter og Managed Beans. public class CustomerBean { String password; String name; boolean important; // getters og setters til 'password' og 'important' står her public String getName() { return name; } public void setName(String name) {this.name = name;} public String createCustomer() { System.out.println("createCustomer() invoked"); if (Math.random()<0.5) { return "success"; } else { return "failure"; } public class CustomerBean { String password; String name; boolean important; // getters og setters til 'password' og 'important' står her public String getName() { return name; } public void setName(String name) {this.name = name;} public String createCustomer() { System.out.println("createCustomer() invoked"); if (Math.random()<0.5) { return "success"; } else { return "failure"; } value-binding

12 12 JavaServer Faces Copyright © Lund & Bendsen faces-config.xml Faces-config.xml-filen beskriver sammenhængen mellem delelementerne i en JSF-applikation. I dette eksempel: Managed Beans Navigationsregler customerBean dk.lundogbendsen.bean.CustomerBean session /pages/createCustomer.xhtml success /pages/viewCustomer.xhtml failure /pages/error.xhtml customerBean dk.lundogbendsen.bean.CustomerBean session /pages/createCustomer.xhtml success /pages/viewCustomer.xhtml failure /pages/error.xhtml

13 13 JavaServer Faces Copyright © Lund & Bendsen Actions JSF er eventorienteret i modsætning til ’normale’ Web-applikationer, som er request/response-orienterede. Princippet er, at vi laver en Action-metode (en event-listener) som vi registerer på en knap. Action-metoder vil typisk invokere forretningslogik, fx placeret i EJB’er. package dk.lundogbendsen.bean; public class CustomerBean {.... public String createCustomer() { System.out.println("createCustomer() invoked"); if (Math.random()<0.5) { //simulerer en ret ustabil database;-) return " success "; } else { return " failure "; }... package dk.lundogbendsen.bean; public class CustomerBean {.... public String createCustomer() { System.out.println("createCustomer() invoked"); if (Math.random()<0.5) { //simulerer en ret ustabil database;-) return " success "; } else { return " failure "; }... En action-metode tager ingen parametre og har String som retur-type. Vi har her valgt at placere den i CustomerBean, men den kunne i princippet være placeret i en hvilken som helst Bean. < h:commandButton action="#{customerBean.createCustomer}" value="Create Customer" />

14 14 JavaServer Faces Copyright © Lund & Bendsen Navigation Action-metoder returnerer en String, der fortæller JSFs navigationssystem, hvilken side der skal forwardes til. I faces-config.xml er String- værdier mappet til Facelets og/eller JSP-sider. Exadel JSFStudios visualisering af faces-config.xml’s navigationsregler package dk.lundogbendsen.bean; public class CustomerBean {.... public String createCustomer() { System.out.println("createCustomer() invoked"); // simulerer en ret ustabil database ;-) if (Math.random()<0.5) { return " success "; } else { return " failure "; }... package dk.lundogbendsen.bean; public class CustomerBean {.... public String createCustomer() { System.out.println("createCustomer() invoked"); // simulerer en ret ustabil database ;-) if (Math.random()<0.5) { return " success "; } else { return " failure "; }...

15 15 JavaServer Faces Copyright © Lund & Bendsen web.xml web.xml i en JSF-applikation vil altid som minimum registrere FacesServletten og mappe den til en url, fx *.jsf eller /faces/*.

16 16 JavaServer Faces Copyright © Lund & Bendsen Overblik over applikationen En JSF-applikation er ’blot’ en almindelig web-applikation, som indeholder en række JSF-jar-filer, bestemte entries i web.xml og xml-filer til konfiguration af applikationen.

17 17 JavaServer Faces Copyright © Lund & Bendsen 1) Et login-skærmbillede Øvelse


Download ppt "1 JavaServer Faces Copyright © Lund & Bendsen Dynamikken i JSF."

Lignende præsentationer


Annoncer fra Google