introduction a jsf

Transcription

introduction a jsf
INTRODUCTION A JSF
Michael Fortier
Master Informatique 2ème année
[email protected]
A308, Université de Paris 13
http ://lipn.univ-paris13.fr/∼fortier/Enseignement/Jsf/
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
2 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
3 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Evolution des technologies
Servlets
JSP
MVC Model 1 : servlets + JSP
MVC Model 2 : un seule servlet + JSP
Java Server Faces
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
5 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Java Server Faces
Framework qui facilite et standardise le développement
d’applications web
S’appuie sur les technologies qui l’ont précédé (Struts)
Peut être codé à la main, l’utilisation d’un outil est fortement
recommandée
Technologie côté serveur orientée interface utilisateur
Sépare clairement la partie « interface » de la partie « métier »
Version 1.0 : JSR-127 mars 2004
Version 2.0 : JSR-3144 juin 2009
Version 2.2 : JSR-344 avril 2013
http://www.oracle.com/technetwork/topics/jsf-092015.html
http://jcp.org/aboutJava/communityprocess/final/jsr245/index.html
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
6 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Atouts de JSF
Assemblage de composants serveur qui génèrent le code de leur
rendu
Possibilité d’associer certains composants à une source de
données encapsulée dans un bean
Utilisation d’événements et de listener
Conversion et validation des données avant leur utilisation dans
les traitements
Possibilité d’étendre les différents modèles et de créer ses
propres composants
Configuration de la navigation entre les pages
Support de l’internationalisation
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
7 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Composition du framework
Une spécification qui définit le mode de fonctionnement du
framework
Une API : l’ensemble des classes de l’API est contenu dans les
packages javax.faces
Une implémentation de référence
Des bibliothèques de tags personnalisés fournies par
l’implémentation pour
utiliser les composants dans les JSP
gérer les événements
valider les données saisies
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
8 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
JSF et MVC
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
9 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Cycle de vie d’une requête
1
2
3
4
5
6
Création de l’arbre de composants
Extraction des données des différents composants de la page
Conversion et validation des données
Extraction des données validées et mise à jour du modèle de
données (javabean)
Traitements des événements liés à la page
Génération du rendu de la réponse
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
10 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Cycle de vie d’une requête
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
11 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Composants graphiques
Fonctionnalité du composant définie dans la classe du composant
Plusieurs rendus pour un même composant
Possibilité de définir des rendus
Simplifie accès et gestion données métiers
Mise en oeuvre de patterns connus
Masque bas niveau (HttpServletRequest/Response)
Meilleure maintenance
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
13 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Exemple
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
14 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Composants de bases - taglib core
<f:actionListener>
<f:convertDateTime>
<f:loadBundle>
<f:validateLength>
<f:validateRequired>
<f:view>
...
<f:ajax>
<f:convertNumber>
<f:param>
<f:validateRegex>
<f:validateLongRange>
<f:valueChangeListener>
http://www.jsftoolbox.com/documentation/help/
12-TagReference/core/index.jsf
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
15 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Composants de bases - taglib html
<h:inputText>
<h:inputTextarea>
<h:inputHidden>
<h:selectOneRadio>
<h:selectOneMenu>
<h:graphicImage>
<h:commandButton>
<h:outputLink>
<h:panelGrid>
<h:selectBooleanCheckbox>
<h:outputText>
<h:selectOneListbox>
<h:outputScript>
<h:message>
<h:commandLink>
...
http://www.jsftoolbox.com/documentation/help/
12-TagReference/html/index.jsf
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
16 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Utilisation dans une "JSP"
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2.0 Hello World</title>
</h:head>
<h:body>
<h2>JSF 2.0 Hello World Example - hello.xhtml</h2>
<h:form>
<h:inputText value="#{helloBean.name}"></h:inputText>
<h:commandButton value="Welcome Me" action="welcome"></h:
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
17 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Rappels
Les beans sont des classes qui respectent une spécification
particulière notamment la présence :
de getters et de setters qui respectent une convention de
nommage particulière pour les attributs
un constructeur par défaut sans arguments
−→ Largement utilisés dans JSF pou l’échange de données entre les
différentes entités et le traitement des événements.
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
19 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Beans et JSF
L’utilisation des Beans dans JSF permettent :
l’affichage des données provenant de la couche métier
le stockage des valeurs d’un formulaire
la validation des valeurs
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
20 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Beans managés
Javabeans dont le cycle de vie va être contrôlé par le framework JSF
en fonction des besoins.
Portée principales d’un bean :
request : portée limitée entre l’émission de la requête et l’envoi de
la réponse.
Les données stockées sont utilisables lors d’un transfert vers une
autre page (forward).
Elles sont perdues lors d’une redirection (redirect).
session : permet la circulation de données entre plusieurs
échanges avec un même client
application : permet l’accès à des données pour toutes les pages
d’une même application quelque soit l’utilisateur
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
21 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Gérer des événements
Chaque composant génère des événements (Events)
Evènements liés aux ‘actions’ utilisateurs
Appui boutton, clic sur lien hypertexte...
Tout composant implémentant une action (ActionSource)
Evènements liés à MAJ interface par l’utilisateur
Modification données champ texte, combo
Tout composant implémentant une édition (EditableValueHolder)
Evènements liés aux données du modèle métier
Le serveur possède des écouteurs (Listeners) qui traitent les
événements
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
23 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Gestion de l’état des composants
L’état peut changer chez le client entre 2 requêtes
JSF prend en charge la gestion de cet état
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
24 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Exemple d’événements
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
25 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Technologie Facelet
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
27 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Technologie Facelet
Une Facelet est un fichier XML pur (6= JSP)
Langage XHTML en général, mais markup-agnostique
3 extensions en général : .jsf, .xhtml ou .faces
Constituée de balises
Structure à vide d’une Facelet
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
...
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
28 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Balises JSF
Rappels JSP
Page html qui peut contenir du code Java
A l’exécution cette page est convertie en servlet
Contient des balises JSP
−→ JSTL ( bibliothèque de balises standard pour java)
−→ JSF propose 3 bibliothèques standard : HTML, Core et UI
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
...
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
29 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Exemple de balise JSF
<h:outputLabel for="confirmation">
Confirmation du mot de passe
<span class="requis">*</span>
</h:outputLabel>
−→ Provenant de la bibliothèque HTML
http://docs.oracle.com/javaee/6/javaserverfaces/2.1/docs/vdldocs/
facelets/
http:
//www.jsftoolbox.com/documentation/help/12-TagReference/index.jsf
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
30 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
EL : le langage d’expression
La liaison des données entre le backing bean et la page s’effectue au
moyen d’expressions :
<h:inputText value="#{login.nom}"/>
<h:inputText value="#{login.[’nom’]}"/>
<h:outputText value="#{messages.salutation}, #{utilisateur.nom}!"/>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
31 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Expressions EL
#{inscrireBean.utilisateur.motDePasse}
#{inscrireBean.inscrire}
Appeler les attributs d’un bean (à partir de ses accesseurs)
Appeler n’importe quelle méthode d’un bean
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
32 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Validation et conversion
Validation :
Agit sur les composants graphiques (textfield)
Personnalisation des validateurs (bornes, types, etc.)
Lève des erreurs
Conversion :
Formatage des données
Ex : 15000 −→ 15,000
Personnalisation possible
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
34 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Navigation entre les pages
JSF h 2.0) −→ faces-config.xml
JSF 2.0 −→ mécanisme "auto view page resolver"
−→ navigation implicite
Auto navigation dans la page JSF
Auto navigation dans le Managed Bean
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
35 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Internationalisation
Possibilité de définir des locales
Fichiers de correspondance :
clé −→ valeur internationalisée
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
36 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Configuration de l’application web
La structure est celle d’une
application j2ee :
/
/WEB-INF
/WEB-INF/web.xml
/WEB-INF/lib
/WEB-INF/classes
Michael Fortier (Université Paris 13)
Librairies à ajouter :
jsf-api.jar
jsf-ri.jar
jstl.jar
standard.jar
common-beanutils.jar
commons-digester.jar
commons-collections.jar
commons-logging.jar
INTRODUCTION A JSF
M2I,LEE,2016-2017
38 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Présentation Composants Bean Evénements Facelet Fonctionnalités Configuration
Configuration de la servlet
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<!-- PAGE D’ACCUEIL -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<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>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
39 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
40 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
1ère application
1
Formulaire de saisi du nom de l’utilisateur : bonjour.xhtml
2
Affichage du résultat dans une deuxième page : bienvenue.xhtml
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
41 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
backing-bean pour stocker le nom saisi par l’utilisateur
TP/HELLO/src/java/BonjourBean.java
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class BonjourBean implements Serializable {
private static final long serialVersionUID = 1L;
private String nom;
public String getNom() {
return nom;
}
public void setNom( String nom ) {
this.nom = nom;
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
42 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Facelet initiale
TP/HELLO/web/bonjour.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>HELLO</title>
</h:head>
<h:body>
<h1>HELLO - bonjour.xhtml</h1>
<h:form>
<h:inputText value="#{bonjourBean.nom}" />
<h:commandButton value="Souhaiter la bienvenue"
action="bienvenue" />
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
43 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Facelet résultat
TP/HELLO/web/bienvenue.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>HELLO</title>
</h:head>
<h:body>
<h1>HELLO - bienvenue.xhtml</h1>
<p>Bienvenue #{bonjourBean.nom} !</p>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
44 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Configuration de l’application
TP/HELLO/web/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<!-- PAGE D’ACCUEIL -->
<welcome-file-list>
<welcome-file>bonjour.xhtml</welcome-file>
</welcome-file-list>
<!-- JSF -->
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<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>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
45 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Exécution de l’application
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
46 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
47 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
JSF standard validators
required
f :validateLength : longeur d’un chaine
f :validateLongRange : range d’valeur numérique
f :validateDoubleRange : range d’valeur double
f :validateRegex : expression régulière
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
49 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Validation requise
TP/VALIDATION/web/bonjour.xhtml
...
<h:inputText id="name"
value="#{bonjourBean.nom}"
requiredMessage="Vous devez renseigner une valeur"
required="true" >
...
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
50 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Validation sur la taille de chaine
TP/VALIDATION/web/bonjour.xhtml
...
<h:inputText id="name"
value="#{bonjourBean.nom}" >
<f:validateLength minimum="5" maximum="12" />
</h:inputText>
...
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
51 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Validation via une méthode dans le Backing Bean
TP/VALIDATION/src/java/BonjourBean.java
public void validateIndividu(FacesContext context, UIComponent component, Object value)
throws ValidatorException {
String entree = (String) value;
if (!(entree == null || "".equalsIgnoreCase(entree)) && !"michael".equalsIgnoreCase(entree)){
FacesMessage msg = new FacesMessage("Probleme", "Individu inconnu");
throw new ValidatorException(msg);
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
53 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Validation via une méthode dans le Backing Bean
TP/VALIDATION/web/bonjour.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>VALIDATION</title>
</h:head>
<h:body>
<h1>VALIDATION - bonjour.xhtml</h1>
<h:form>
<h:inputText id="name"
value="#{bonjourBean.nom}"
requiredMessage="Vous devez renseigner une valeur"
required="true" validator="#{bonjourBean.validateIndividu}" >
</h:inputText>
<h:commandButton value="Souhaiter la bienvenue"
action="bienvenue" />
<h:message for="name" style="color:red" />
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
54 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Classe Validator
TP/VALIDATION/src/java/NameValidator.java
import
import
import
import
import
import
javax.faces.application.FacesMessage;
javax.faces.component.UIComponent;
javax.faces.context.FacesContext;
javax.faces.validator.FacesValidator;
javax.faces.validator.Validator;
javax.faces.validator.ValidatorException;
@FacesValidator("NameValidator")
public class NameValidator implements Validator {
@Override
public void validate(FacesContext facesContext,
UIComponent component, Object value)
throws ValidatorException {
StringBuilder url = new StringBuilder();
String nameValue = value.toString();
if (!nameValue.equalsIgnoreCase("michael")) {
FacesMessage msg = new FacesMessage("Probleme", "Individu inconnu");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ValidatorException(msg);
}
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
56 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Facelet associée
TP/VALIDATION/web/bonjour.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>VALIDATION</title>
</h:head>
<h:body>
<h1>VALIDATION - bonjour.xhtml</h1>
<h:form>
<h:inputText id="name"
value="#{bonjourBean.nom}"
requiredMessage="Vous devez renseigner une valeur"
required="true" >
<f:validateLength minimum="5" maximum="12" />
<f:validator validatorId="NameValidator" />
</h:inputText>
<h:commandButton value="Souhaiter la bienvenue"
action="bienvenue" />
<h:message for="name" style="color:red" />
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
57 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Validator Validator et Bean Custom Validator
Résultat du custom validator
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
58 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
59 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
JSF standard Converter
BigDecimalConverter
BigIntegerConverter
BooleanConverter
ByteConverter
CharacterConverter
DateTimeConverter
DoubleConverter
EnumConverter
FloatConverter
IntegerConverter
LongConverter
NumberConverter
ShortConverter
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
61 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Exemples - bouts de Code
<h:inputText id="salaire" value="#{testBean.salaire}" required="true">
<f:convertNumber type="currency"/>
</h:inputText>
<h:inputText id="date" value="#{testBean.date}" required="true">
<f:convertDateTime type="date" dateStyle="long"/>
</h:inputText>
<h:inputText id="population" value="#{testBean.population}"
required="true">
<f:convertNumber type="#,###.00"/>
</h:inputText>
<h:outputText value="1234567890">
<f:convertNumber pattern="(##) ####-####"/>
</h:outputText>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
62 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Classe converter
TP/CONVERTER/src/java/PhoneConverter.java
@FacesConverter("PhoneConverter")
public class PhoneConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component,
String value) {
if (value==null||"".equalsIgnoreCase(value)) {
FacesMessage msg = new FacesMessage("erreur de conversion",
"Valeur invalide");
msg.setSeverity(FacesMessage.SEVERITY_ERROR);
throw new ConverterException(msg);
}
StringBuilder phone = new StringBuilder();
int index = 0;
while (index < value.length()) {
phone.append(" "+value.substring(index, Math.min(index + 2, value.length())));
index = index + 2;
}
return phone;
}
@Override
public String getAsString(FacesContext context, UIComponent component,
Object value) {
return value.toString();
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
64 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Backing Bean
TP/CONVERTER/src/java/BonjourBean.java
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class BonjourBean implements Serializable {
private static final long serialVersionUID = 1L;
private String nom;
private String phone;
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
65 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Facelet initiale
TP/CONVERTER/web/bonjour.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>CONVERTER</title>
</h:head>
<h:body>
<h1>CONVERTER - bonjour.xhtml</h1>
<h:form>
<h:outputText value="Votre nom : " />
<h:inputText id="name"
value="#{bonjourBean.nom}"
requiredMessage="Vous devez renseigner une valeur"
required="true" >
</h:inputText> <br/>
<h:outputText value="Votre telephone :" />
<h:inputText id="phone"
value="#{bonjourBean.phone}"
requiredMessage="Vous devez renseigner une valeur"
required="true"
converter="PhoneConverter" >
</h:inputText> <br/>
<h:commandButton value="Souhaiter la bienvenue"
action="bienvenue" />
<h:message for="name" style="color:red" />
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
66 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Facelet résultat
TP/CONVERTER/web/bienvenue.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>CONVERTER</title>
</h:head>
<h:body>
<h1>CONVERTER - bienvenue.xhtml</h1>
<p><h:outputText value="Bienvenue #{bonjourBean.nom} !" /></p>
<p><h:outputText value="Votre telephone : #{bonjourBean.phone}"/></p>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
67 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Standard Converter Custom Converter
Résultat du custom converter
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
68 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
69 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
JSF et langues
Il faut définir un fichier au format properties qui va contenir la définition
des chaînes de caractères :
le fichier doit avoir l’extension .properties
il doit être dans le classpath de l’application
il est composé d’une paire clé=valeur par ligne. La clé permet
d’identifier de façon unique la chaîne de caractères
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
71 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Création des fichiers
Fichier par défaut
msg.properties
titre=HELLO
bienvenue=Bienvenue
Fichier français
msg_fr.properties
titre=HELLO
bienvenue=Bienvenue
Fichier anglais
msg_en.properties
titre=HELLO
bienvenue=Welcome
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
72 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Configuration JSF
TP/INTERNATIONALISATION/web/WEB-INF/faces-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<application>
<locale-config>
<default-locale>fr</default-locale>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>
</application>
</faces-config>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
74 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Bean de changement de langue
TP/INTERNATIONALISATION/src/java/LangueBean.java
import
import
import
import
import
java.io.Serializable;
java.util.Locale;
javax.faces.bean.ManagedBean;
javax.faces.bean.SessionScoped;
javax.faces.context.FacesContext;
@ManagedBean
@SessionScoped
public class LangueBean implements Serializable {
private static final long serialVersionUID = 1L;
public String activerFR() {
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(Locale.FRENCH);
return null;
}
public String activerEN() {
FacesContext context = FacesContext.getCurrentInstance();
context.getViewRoot().setLocale(Locale.ENGLISH);
return null;
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
76 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Facelet
TP/INTERNATIONALISATION/web/bonjour.xml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<f:loadBundle basename="msg" var="msg"/>
<h:head>
<title><h:outputText value="#{msg.titre}"/></title>
</h:head>
<h:body>
<h1><h:outputText value="#{msg.titre}"/> - bonjour.xhtml</h1>
<h:form>
<h:commandLink action="#{langueBean.activerFR}" immediate="true">
FR
</h:commandLink>
<h:commandLink action="#{langueBean.activerEN}" immediate="true">
EN
</h:commandLink>
<br/>
<h:inputText value="#{bonjourBean.nom}" />
<h:commandButton value="#{msg.valider}" action="bienvenue" />
</h:form>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
77 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Fichiers de langues Configuration JSF Utilisation
Résultat
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
78 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
79 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Intérêts des templates d’affichage
Offrir une vue homogène sur l’ensemble de l’application
Découper les pages en zones
Eclater le code des vues −→ Simplifier le développement
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
81 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Arborescence de fichiers
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
83 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
layout.xhtml
TP/LAYOUT/web/template/layout.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<h:outputStylesheet name="style.css" library="css" />
</h:head>
<h:body>
<div id="page">
<div id="header">
<ui:insert name="header" >
<ui:include src="/template/header.xhtml" />
</ui:insert>
</div>
<div id="content">
<ui:insert name="content" >
<ui:include src="/template/content.xhtml" />
</ui:insert>
</div>
<div id="footer">
<ui:insert name="footer" >
<ui:include src="/template/footer.xhtml" />
</ui:insert>
</div>
</div>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
84 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Facelets
TP/LAYOUT/web/template/header.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<body>
<ui:composition>
<h1>Header par defaut</h1>
</ui:composition>
</body>
</html>
TP/LAYOUT/web/template/content.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<body>
<ui:composition>
<h1>Contenu par defaut</h1>
</ui:composition>
</body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
85 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
CSS
TP/LAYOUT/web/resources/css/style.css
#page{
width: 800px;
margin: 0 auto;
}
#header{
width: 100%;
height:100px;
border: 1px solid #000;
margin-bottom:16px;
}
#content{
width: 100%;
height:200px;
margin-right:16px;
margin-bottom:16px;
border: 1px solid #000;
}
#footer{
width: 100%;
height:100px;
border: 1px solid #000;
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
86 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Exemple : page Hello
TP/LAYOUT/web/bonjour.xhtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>HELLO</title>
</h:head>
<h:body>
<ui:composition template="/template/layout.xhtml">
<ui:define name="header">
<h1>HELLO - bonjour.xhtml</h1>
</ui:define>
<ui:define name="content">
<h:form>
<h:inputText value="#{bonjourBean.nom}" />
<h:commandButton value="Souhaiter la bienvenue"
action="bienvenue" />
</h:form>
</ui:define>
<ui:define name="footer">
<h2>Footer de la page Bonjour</h2>
</ui:define>
</ui:composition>
</h:body>
</html>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
88 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Intérêts Construction Utilisation
Résultat
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
89 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
90 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Intérêts de Primefaces
Créer :
des interfaces web plus conviviales grâce au nombreux
composants
des interfaces plus fluides grâce à la technologie AJAX
−→ interfaces riches ou RIA (Rich Internet Application).
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
92 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Primefaces % JSF
Les pages JSF sont construites avec 3 bibliothèques de balises :
les balises <h :x> −→ balises HTML
les balises <f :y> −→ balises JSF
les balises <ui :z> −→ balises des facelets
On ajoute les balises "Primefaces" <p :z> de l’espace de noms
[http ://primefaces.org/ui]
−→ Seule modification à apporter
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
93 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Javascript
JQuery
JQuery UI (User Interface)
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
94 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Comportement AJAX
1
Un événement (géré par du Javascript) se produit dans la page
2
Le Javascript fait un POST asynchrone à l’application web.
Ce POST met à jour le modèle de la page à partir des valeurs postées
3
L’application web renvoie au Javascript, une réponse XML (le X de AJAX) ou JSON
(JavaScript Object Notation),
4
Le Javascript utilise cette réponse pour mettre à jour une zone précise du DOM
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
95 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Bean Editor
TP/PRIMEFACES/src/java/EditorBean.java
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name = "editorBean")
@SessionScoped
public class EditorBean {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
97 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Composant Editor
TP/PRIMEFACES/web/index.xhtml
<h:form>
<p:editor id="editor" widgetVar="editorWidget" value="#{editorBean.text}" width="600" />
<h:panelGrid columns="2" style="margin-top: 10px">
<p:commandButton value="Submit" update="display"
oncomplete="PF(’dlg’).show()" icon="ui-icon-disk" />
<p:commandButton value="Clear" type="button"
onclick="PF(’editorWidget’).clear();" icon="ui-icon-close" />
</h:panelGrid>
<p:dialog header="Content" widgetVar="dlg" showEffect="fade" hideEffect="fade">
<h:outputText id="display" value="#{editorBean.text}" escape="false" />
</p:dialog>
</h:form>
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
98 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Résultat
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
99 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Bibliothèque Utilisation Apprentissage
Apprentissage
http://www.primefaces.org/showcase/
Méthode :
1
repérer le composant Primefaces qu’on veut utiliser
2
étudier son exemple
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
101 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Sommaire
1
Jsf
2
1ère application
3
Validation
4
Converter
5
Internationalisation
6
Layout
7
Primefaces
8
TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
102 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Buts du TP
Prendre en main JSF
Intégration dans un IDE (Netbeans)
Manipuler la bibliothèque de composants Primefaces
=⇒ http ://lipn.univ-paris13.fr/∼fortier/Enseignement/Jsf/TP
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
103 / 104
JSF
1ère application
Validation
Converter
Internationalisation
Layout
Primefaces
TP
Organisation
Utiliser Netbeans
Type "tutoriel réfléchi"
Ne pas utiliser la librairie Jsf intégrée à Netbeans
→ Partir des librairies fournies
→ Possibilité d’utiliser maven
Tests unitaires avec JUNITS
Michael Fortier (Université Paris 13)
INTRODUCTION A JSF
M2I,LEE,2016-2017
104 / 104

Documents pareils