Académique Documents
Professionnel Documents
Culture Documents
30/11/2011
Remarque
INTRODUCTION JSF2
Adapt du cours de Richard Grin (grin@unice.fr)
Adaptation Michel Buffa (buffa@unice.fr), UNSA 2012
21/10/99
21/10/99
Richard Grin
JSF - page 4
21/10/99
JSF - page 2
Utilit de JSF
Richard Grin
JSF - page 5
Internationalisation
21/10/99
Richard Grin
JSF - page 6
Cours JSF/Java EE
30/11/2011
Standards
Page JSF
21/10/99
Richard Grin
JSF - page 7
21/10/99
Richard Grin
JSF - page 8
Composants de larchitecture
21/10/99
Richard Grin
JSF - page 10
21/10/99
Richard Grin
JSF - page 11
Cours JSF/Java EE
30/11/2011
Backing bean
21/10/99
Backing bean
Richard Grin
JSF - page 14
21/10/99
Richard Grin
JSF - page 16
21/10/99
Richard Grin
JSF - page 17
Le cycle de vie
21/10/99
Richard Grin
JSF - page 18
Cours JSF/Java EE
30/11/2011
Le servlet Faces
21/10/99
Richard Grin
JSF - page 19
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Richard Grin
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>
javax.faces.webapp.FacesServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
21/10/99
Richard Grin
JSF - page 20
Codage - dcodage
21/10/99
JSF - page 21
Cycle de vie
21/10/99
Richard Grin
JSF - page 23
pas compltement
vident !
21/10/99
Richard Grin
JSF - page 24
Cours JSF/Java EE
30/11/2011
La vue
21/10/99
Richard Grin
JSF - page 25
Contenu de la vue
21/10/99
Richard Grin
JSF - page 26
Construction vue
21/10/99
Richard Grin
JSF - page 27
Richard Grin
JSF - page 28
21/10/99
Richard Grin
JSF - page 29
21/10/99
Richard Grin
JSF - page 30
Cours JSF/Java EE
30/11/2011
21/10/99
Richard Grin
JSF - page 31
21/10/99
Richard Grin
JSF - page 32
21/10/99
Richard Grin
JSF - page 33
21/10/99
Richard Grin
JSF - page 34
Phase de validation
21/10/99
Richard Grin
JSF - page 35
21/10/99
Richard Grin
JSF - page 36
Cours JSF/Java EE
30/11/2011
Phase de validation
21/10/99
Richard Grin
JSF - page 37
21/10/99
Richard Grin
JSF - page 38
21/10/99
Richard Grin
JSF - page 40
21/10/99
Richard Grin
JSF - page 42
Exemple :
<h:inputText id="nom"
value="#{backingBean.utilisateur.nom}" />
21/10/99
Richard Grin
JSF - page 39
21/10/99
Richard Grin
JSF - page 41
Cours JSF/Java EE
30/11/2011
21/10/99
Richard Grin
Exemple (1/2)
JSF - page 43
Exemple (2/2)
<h:inputText valueChangeListener="#{}"
...
onChange = "this.form.submit()" />
Cours JSF/Java EE
30/11/2011
Handler de navigation
21/10/99
Richard Grin
JSF - page 49
21/10/99
Richard Grin
JSF - page 50
21/10/99
Richard Grin
JSF - page 51
21/10/99
Richard Grin
JSF - page 52
Valeur retourne
<from-outcome>succes</from-outcome>
<to-view-id>/succes.xhtml</to-view-id>
<navigation-case>
<navigation-case>
Michel Buffa (buffa@unice.fr), UNSA 2012
<from-outcome>echec</from-outcome>
<to-view-id>/echec.xhtml</to-view-id>
<navigation-case>
</navigation-rule>
21/10/99
Richard Grin
JSF - page 53
Cours JSF/Java EE
Plan de la section
30/11/2011
Scnario
Il linstancie automatiquement,
Ncessit davoir un constructeur par dfaut
Contrle son cycle de vie
Ce cycle dpend de la porte (scope) (request, session,
application, etc.)
Appelle les mthodes setter
Par ex pour <h:inputText value="#{customer.firstName"/>,
lorsque le formulaire est soumis, le paramtre est pass
setFirstName()
Appelle les mthodes getter
#{customer.firstName} revient appeler getFirstName()
10
Cours JSF/Java EE
30/11/2011
}
}
@Named
public class BanqueMBean {
@ManagedBean
public class BanqueMBean {
@Named("banqueController")
public class BanqueMBean {
@ManagedBean(name="banqueController")
public class BanqueMBean {
<h:inputText id="nom"
value="#{backingBean.utilisateur.nom}" />
11
Cours JSF/Java EE
@SessionScoped
30/11/2011
@ViewScoped
@ApplicationScoped
@RequestScoped
@ConversationScoped
12
Cours JSF/Java EE
@SessionScoped
30/11/2011
Backing Bean :
Srializable
<h:form id="deconnexionForm"
rendered="#{loginMBean.connected}">
<h:form id="loginForm"
rendered="#{!loginMBean.connected}">
<h:outputText
value="#{loginMBean.message}" />
<h:commandButton value="Deconnexion"
action="#{loginMBean.deconnexion}" />
</h:form>
<h:commandButton value="Login"
action="#{loginMBean.connexion}" />
</h:form>
String login;
String password;
boolean connected = false;
String message = "Veuillez vous identifier :";
if (connected) {
}
message = "Bienvenue, vous tes connect en tant que "
+ login + " ! ";
} else {
message = "Mauvais login/password, recommencez";
}
}
13
Cours JSF/Java EE
30/11/2011
@ViewScoped
@ConversationScoped
@Named(value = "customerMBean")
@ConversationScoped
public class CustomerMBean implements Serializable {
@Inject
@ConversationScoped
21/10/99
Richard Grin
JSF - page 82
Utiliser GET
21/10/99
Richard Grin
JSF - page 83
14
Cours JSF/Java EE
30/11/2011
La raison du problme
La solution :
POST, REDIRECT, GET (PRG)
21/10/99
Sans PRG
21/10/99
Richard Grin
JSF - page 88
Richard Grin
JSF - page 90
Avec PRG
Richard Grin
JSF - page 89
21/10/99
15
Cours JSF/Java EE
30/11/2011
Problme de PRG
Solutions
Paramtres de vue
<f:metadata>
<f:viewParam name="n1"
value="#{bean1.p1}" />
<f:viewParam name="n2"
value="#{bean2.p2}" />
<f:metadata>
Richard Grin
JSF - page 93
<f:viewParam> (suite)
<f:viewParam>
21/10/99
21/10/99
JSF - page 94
Fonctionnement de includeViewParams
1.
2.
3.
Exemple :
<h:commandButton value=
action="page2?faces-redirect=true
&includeViewParams=true"
Dans le navigateur on verra lURL avec
les paramtres HTTP.
Richard Grin
16
Cours JSF/Java EE
30/11/2011
Fonctionnement de includeViewParams
Fonctionnement
Exemple ; page2.xhtml
<!DOCTYPE >
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns=...>
<f:metadata>
<f:viewParam name="param1"
value="#{bean.prop1}"/>
<f:viewParam name="param2" value="#{}"/>
</f:metadata>
<h:head></h:head>
<h:body>
Valeur : #{bean.prop1}
21/10/99
Richard Grin
JSF - page 99
21/10/99
Richard Grin
21/10/99
Richard Grin
21/10/99
Richard Grin
17
Cours JSF/Java EE
30/11/2011
Exemple de preRenderView
21/10/99
Richard Grin
<f:metadata>
<f:viewParam name="id"
value="#{bean.IdClient}"/>
<f:event type="preRenderView"
listener="#{bean.chargeClient}"/>
</f:metadata>
...
Nom : #{bean.client.nom}
...
21/10/99
Richard Grin
ANNEXES
R. Grin
Attribut binding
Le composant peut ainsi tre manipul par le
backing bean avec du code Java
JSF
page 106
R. Grin
JSF
page 107
Exemples de messages :
R. Grin
JSF
page 108
18
Cours JSF/Java EE
30/11/2011
<h:messages>
<h:message>
Exemple :
<h:messages errorClass="erreur" />
R. Grin
JSF
page 109
Exemple :
<h:message for="nom" />
R. Grin
JSF
page 110
Les listes
R. Grin
JSF
R. Grin
JSF
page 113
R. Grin
JSF
19
Cours JSF/Java EE
30/11/2011
Classe SelecItem
Paquetage javax.faces.model
</h:selectOneListbox>
<f:selecItems>
R. Grin
JSF
page 116
JSF
R. Grin
getSelectItems(List<?> entities) {
}
return items;
}
R. Grin
JSF
page 119
R. Grin
JSF
page 120
20
Cours JSF/Java EE
30/11/2011
R. Grin
JSF
page 121
Dsigner un convertisseur
R. Grin
page 122
Convertisseurs standards
<h:selectOneMenu
value="#{myBean.selectedItem}">
<f:selectItems
value="#{myBean.selectItems}" />
Exemple :
<inputText
value="#{employe.dateNaissance}">
<f:convertDateTime
pattern="dd/MM/yyyy"/>
</inputText>
<f:converter converterId="fooConverter"/>
</h:selectOneMenu>
JSF
JSF
page 123
crire un convertisseur
R. Grin
JSF
page 125
21
Cours JSF/Java EE
30/11/2011
Constructeur vide,
Pas dattributs publics, les attributs doivent avoir
des getter et setters, on les appelle des proprits.
Exemples de proprits
Nom de mthode
: proprits boolennes
getValid() ou isValid() (recommand),
Nom de la proprit : valid
Accs par #{login.valid}
Exception 2 : proprits majuscules
Si deux majuscules suivent le get ou le
set, la proprit est toute en majuscule,
Ex : getURL(),
Proprit : URL,
Accs par #{website.URL}
Nom de proprit
Exception 1
getFirstName
setFirstName
firstName
isValid
setValid
(boolen)
valid
getValid
setValid
(boolen)
valid
getZIP
setZIP
ZIP
#{customer.firstName}
<h:inputText
value="#{customer.firstName}"/>
#{login.valid}
<h:selectBooleanCheckbox
value="#{customer.valid}"/>
#{login.valid}
<h:selectBooleanCheckbox
value="#{customer.valid}"/>
#{address.ZIP}
<h:inputText value="#{address.ZIP}"/>
22
Cours JSF/Java EE
30/11/2011
Exemple
FacesContext facesContext =
FacesContext.getCurrentInstance();
ExternalContext extContext =
facesContext.getExternal();
HttpServletRequest response =
(HttpServletRequest)extContext.getResponse();
response.sendRedirect(url);
23