Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.
-
Upload
lauretta-russo -
Category
Documents
-
view
244 -
download
0
Transcript of Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.
![Page 1: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/1.jpg)
Corso JSFCorso JSFJava Server FacesJava Server Faces
Mauro Sanfilippo
02/09/2010
![Page 2: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/2.jpg)
Contenuto del corsoContenuto del corso
• Introduzione alle JSF
• Esercitazione (guidata dal docente)
• Questionario
• Esercizio (individuale)
![Page 3: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/3.jpg)
JSFJSF
• Framework per la creazione di web app Java
• Evoluzione naturale delle JSP
• Oggi alla versione 2.0 (JSR 314) incluso e supportato dai principali appserver e IDE
• Basato su standard
• Supportato da Sun, IBM, Oracle
![Page 4: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/4.jpg)
Servlet e JSPServlet e JSP
![Page 5: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/5.jpg)
Servlet e JSPServlet e JSP
Problemi:
• Gestione "manuale" della request
• Nessun aiuto nella navigazione e nella validazione
• Poco OO: si lavora con le stringhe
Vantaggi:
• Controllo più fine
![Page 6: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/6.jpg)
Da JSP a JSFDa JSP a JSFIdea:
1. la pagina è un insieme di oggetti Java, che chiamiamo componenticomponenti
2. i componenti sono definiti in un file xml
3. tutte le chiamate sono intercettate da una sola servlet (Faces Servlet), che crea la struttura dati Java che
rappresenta l'albero di componenti (View)
4. i componenti sono contenitori di dati agganciati a classi create dallo sviluppatore
5. alla fine della request la view viene renderizzata in HTML
![Page 7: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/7.jpg)
Le pagine JSFLe pagine JSF
• Una pagina JSF è un file XML (solitamente suffisso XHTML)
contenente codice HTML e tag JSF, che definisce un albero di
componenti
![Page 8: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/8.jpg)
Managed BeanManaged Bean• Ogni pagina ha a disposizione oggetti Java creati dall'utente e gestiti (managed) dal
framework
• Tramite l'Expression Language i componenti JSF vengono "legati" ai metodi del managed
bean
metodi Getter e Setter
metodi Action Dipendono dal componente
metodi Listener Diversa firma
metodi Validator
![Page 9: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/9.jpg)
FasiFasi
Ogni Faces Request genera l'esecuzione di una procedura divisa in 6 fasi6 fasi:
1.1. Restore ViewRestore View: viene ricreato l'albero dei componenti
2.2. Apply Req ValuesApply Req Values: viene letta la request e impostati i valori passati nei componenti
3.3. Process ValidationsProcess Validations: i valori impostati nei componenti vengono controllati (convertiti
da stringhe (parametri request!) a oggetti Java e validati)
4.4. Update Model ValuesUpdate Model Values: i valori validi vengono passati ai setter del managed bean
(model)
5.5. Invoke ApplicationInvoke Application: vengono chiamate le azioni dei managed bean e/o viene definita
la prossima pagina da renderizzare
6.6. Render ResponseRender Response: viene generato la nuova view e viene renderizzata in HTML
![Page 10: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/10.jpg)
Learning by examplesLearning by examples
• Creiamo in 9 step un'applicazione via via sempre più complicata
per imparare la basi delle JSF
• Applicazione CRUD
• Utilizzeremo le JSF 2.0
Risorse:Risorse: http://wiki.smeup.com ricerca: "Corso JSF"
![Page 11: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/11.jpg)
Nuovo progettoNuovo progetto• NetbeansNetbeans: Nuovo Progetto Java Web … selezionare il framework
JSF
• EclipseEclipse: Dynamic Web Project con Target Runtime Glassfish v3 Java EE 6
![Page 12: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/12.jpg)
Struttura dell'applicazione JSF 2.0Struttura dell'applicazione JSF 2.0
Nel Web Content:
• views: le pagine della nostra applicazione
• sections: le porzioni di pagina inclusione
• resources: immagini, css, javascript e altre risorse
Attenzione: il framework, per default, utilizzerà Attenzione: il framework, per default, utilizzerà
“resources” come insieme di librerie di risorse“resources” come insieme di librerie di risorse
![Page 13: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/13.jpg)
NavigazioneNavigazione
![Page 14: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/14.jpg)
Navigazione (2)Navigazione (2)
In JSF 2.0 la navigazione è semplificata:
1. outcome<=>percorso della pagina (esclusa l'estensione)
2. from-view-id<=> *
Quindi non serve specificare nulla in faces-config:
<h:commandButton action="pagine/res" value="Conferma"/>
![Page 15: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/15.jpg)
Composizione e templatingComposizione e templating
JSF 2.0 include il motore di templating Facelets, che
permette la composizione di pagine in due modalità:
1. templating => "ereditarietà"
2. inclusione
![Page 16: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/16.jpg)
Managed Bean e scopeManaged Bean e scope
• @ManagedBeano dichiara che la classe deve essere "gestita" dalla JSFo l'oggetto diventa utilizzabile nella pagine XMTML per nome
ListController => #{listController}
• @RequestScoped istanziato e distrutto ad ogni request
• @SessionScoped mantenuto in session, stessa istanza per
ogni request di quella sessione
• @ApplicationScoped stessa istanza per ogni sessione
![Page 17: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/17.jpg)
ComposizioneComposizione
<ui:include> migliore organizzazione, riuso,
incapsulamento,
parametrizzazione
![Page 18: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/18.jpg)
I componenti JSFI componenti JSF
• Oggetti Java che implementano le interfacce del framework
(UIComponent e sub)
• Si renderizzano in "pezzi" di html + javascript + risorse
• Possibile creare i propri, quindi possibile usare quelli fatti da altri:
basta includere un JAR (opportunamente creato)
• Sostanzialmente tre tipologie:
o INPUT metodi setter e getter del MB
o OUTPUT metodi getter
o ACTION metodi action (ma anche getter e setter)
![Page 19: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/19.jpg)
ConverterConverter• Le JSF oggettificano
• Esistono convertitori automatici non dichiarati (String, Long, Int, BigDecimal, Date, ecc )
• Possono essere creati convertitori custom:1. Da String (HTML/Parametro request) a Object
2. Da object a String
@FacesConverter(forClass=Camera.class)
public class CameraConverter implements Converter
• L'interfaccia Converter obbliga a implementare i metodio getAsStringo getAsObject
1. Se la conversione va male throw new ConverterException(…) catturata e gestita dal framework
![Page 20: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/20.jpg)
ValidatorsValidators
• Classi e/o metodi del MB che validano gli oggetti (già convertiti) passati come input dalla pagina
• Validatori built-in:<f:validateLongRange minimum="1" maximum="5"/>
• Validatori custom:@FacesValidator (value="validaEmail“)
public class ValidaEmail implements Validator
• Nella pagina:
<f:validator validatorId="validaEmail"/>
![Page 21: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/21.jpg)
MessaggiMessaggi• In JSF i messaggi agli utenti sono gestiti dal framework, attraverso l'oggetto
FacesContext:
FacesContext.getCurrentInstance().addMessage(
null, //null=nessun componente-> messaggio "GLOBALE"
new FacesMessage("Errore")
);
FacesContext.getCurrentInstance().addMessage(
"input_email", //id componenti-> messaggio del componente
new FacesMessage("Errore")
);
• Convertitori e validatori lanciano messaggi legati ai componenti a cui sono agganciati.
• I messaggi vengono visualizzati nella pagina in corrispondenza dei componenti
<f:messages> messaggi multipli
<f:message for="input_email"> un singolo messaggio, relativo a un componente
![Page 22: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/22.jpg)
Problemi comuniProblemi comuni
• Equals• Utilizzo dei componenti "select" e dei loro
convertitori• Date• Scope Request
![Page 23: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/23.jpg)
ConclusioneConclusione
Vantaggi:• tutto più OO• validazione• eventi
Svantaggi:• performance potenzialmente più scadenti• debugging complicato• minor controllo
![Page 24: Corso JSF Java Server Faces Mauro Sanfilippo 02/09/2010.](https://reader035.fdocument.pub/reader035/viewer/2022081504/5542eb4d497959361e8bb3b8/html5/thumbnails/24.jpg)
Argomenti non trattatiArgomenti non trattati
• Ajax• Altri scope (solo CDI)• <f:event>• …