Académique Documents
Professionnel Documents
Culture Documents
J SF
J ava Server Faces
LAWT-SWING du WEB
Pagesjsp 1
Yves Bekkers
Introduction
Pagesjsp 2
J SF Quest-ce que cest ?
Une technologie de dveloppement dapplication
WEB (framework) qui dispense dcrire du code
J ava dans les interfaces
Qui offre
Deux librairies de composants graphiques
Pagesjsp 3
Mcanismes dvnements et de validation
Mcanisme de navigation de page en page
Gestion automatique de dobjets en arrire plan
Conue aussi pour faciliter la fabrication doutils
de dveloppements adquates (plus de 6 outils de
dveloppement connus)
Deux librairies
Librairie HTML (composants graphiques)
<%@t agl i b pr ef i x=" h"
ur i ="http://java.sun.com/jsf/html"%>
Pagesjsp 4
Librairie Core (validation, gestion des
vnements, conversions)
<%@t agl i b pr ef i x=" f"
ur i ="http://java.sun.com/jsf/core"%>
Librairie HTML
Inputs <h: i nput Text >, <h: i nput Text ar ea>
Outputs <h: out put Text >, <h: out put Label >
Commands <h: commandBut t on>
Selections <h: sel ect OneRadi o>
Pagesjsp 5
Selections <h: sel ect OneRadi o>,
<h: sel ect OneLi st box>, <h: sel ect OneMenu>
Layouts <h: panel Gr i d>
Data table <h: dat aTabl e>
Errors and messages <h: message>,
<h: messages>
Librairie core
<f:view> fentre principale
<f:subview> fentre secondaire au sein dune
fentre principale.
<f:validator> ajouter une validation un
composant.
Pagesjsp 6
p
<f:converter> ajouter un convertisseur un
composant.
<f:actionListener> ajouter un couteur
dvnement de type action.
<f:valueChangeListener> ajouter un couteur
dvnement de type changement de valeur.
2
Composants graphiques et rendu
Deux niveaux de vues
la vue abstraite ou modle, la vue concrte (rendu visuel)
Un mme composant abstrait peut avoir plusieurs rendus.
le composant UI Sel ect One possde les 3 rendus
Pagesjsp 7
Bouton radio
Case cocher
lment dune liste droulante
Le composant UI Command possde 2 rendus
Le lien hypertexte <commandLi nk>
Le bouton <commandBut t on>
Le composant abstrait UI I i nput
I UI nput possde 4 rendus
<h: i nput Hi den>Paramtres cachs
<h: i nput Secr et >Lignedetextesansespace
Pagesjsp 8
<h: i nput Secr et >Ligne de texte sans espace
rendu par des *
<h: i nput Text >Une ligne de texte
<h: i nput Text ar ea>Plusieurs lignes de texte
Rendus du composants UI I i nput
<h: i nput ext >
<h: i nput secr et >
Pagesjsp 9
<h: i nput hi dden>
<h: i nput Text Ar ea>
Listeners, validateur, convertisseurs
On peut nommer les composants graphiques
abstraits et leur associer des
Listeners
Validate rs
Pagesjsp 10
Validateurs
Convertisseurs
Des objets (java beans)
Beans UI abstrait UI concret
Conversion
validation
association
synchronisation
La page bonjour
<body>
<f : vi ew>
<h: out put Text val ue=" Bonjour !" / >
/ f i
Pagesjsp 11
</ f : vi ew>
</ body>
Second exemple un formulaire
<body>
<f : vi ew>
<h: f or m>
<h: commandBut t on act i on= " vert"
Pagesjsp 12
val ue=" GoToGreenPage" / >
<h: commandBut t on act i on= " bleu"
val ue=" GoToBluePage" / >
</ h: f or m>
</ f : vi ew>
</ body>
3
Exemples de tags J SF
<f : vi ew>
Conteneur des lments
hi bli i d
<%@t agl i b ur i =" http://java.sun.com/jsf/core" pr ef i x=" f" %>
<%@t agl i b ur i =" http://java.sun.com/jsf/html" pr ef i x=" h" %>
Pagesjsp 13
graphiques : obligatoire dans
toute page J SF
<h: f or m>
Formulaire
<h: commandBut t on>
Bouton de formulaire
Technologies concurrentes
Servlets et pages J SP
Pas de technologie dinterface base de composants
graphiques
Struts
Pas de technologie dinterface base de composants
graphiques
Pagesjsp 14
graphiques
Pas de modle dvnements
Pas de gestion de ltat de composants graphiques
Struts est li HTML pour son rendu
Spring
Trs rcent, voir
Bibliothques requises
jsf-api.jar
librairies j avax. f aces. *
jsf-imp.jar (oujsf-ri.jar)
limplementation des composants com. sun. f aces. *
jstl.jar et standard.jar
ncessaires pour utiliser les tags J STL tags et pour certaines
rfrences faites par lapi J avaServer Faces (internationalisation )
b til j
Pagesjsp 15
commons-beanutils.jar
manipulation des javabeans
commons-digester.jar
Manipulation des documents XML
commons-collections.jar
extensions deJ ava2 SDK (Col l ect i ons)
commons-logging.jar
des facilits gnriques pour crer des fichiers delog
Fichier web. xml
Dclaration de la servlet controleur J SF
<!-- Faces Servlet -->
<ser vl et >
<ser vl et - name>Faces Ser vl et </ ser vl et - name>
<ser vl et - cl ass>
/
Pagesjsp 16
j avax. f aces. webapp. FacesSer vl et </ ser vl et - cl ass>
<l oad- on- st ar t up>1</ l oad- on- st ar t up>
</ ser vl et >
<!-- Faces Servlet Mapping -->
<ser vl et - mappi ng>
<ser vl et - name>Faces Ser vl et </ ser vl et - name>
<ur l - pat t er n>*. j sf </ ur l - pat t er n>
</ ser vl et - mappi ng>
Fichier de configuration
Fichier de configuration faces-config.xml
Dfinir la navigation de paga en page
Dfinir lesinstancesdobjetsdarrireplan(les
Pagesjsp 17
Dfinir les instances d objets d arrire plan (les
backing beans)
Dfinir des classes de validation de donnes
Dfinir des classes dcoute dvnements
Fonctionnement
Pagesjsp 18
4
J SF comment a marche
Chaque page est caractrise par un arbre de
composants graphiques
Une servlet contrleur construit les pages avec leurs
composants graphiques (Input type, label, table...)
i l l t d l h d t l tif
Pagesjsp 19
puis la servlet dclenche des vnements relatifs
chacun des composants de la page.
Les valeurs affiches ou saisies dans les composants
graphiques peuvent tre associes des attributs
dinstances dobjets grs automatiquement en arrire
plan de lapplicationles backing beans
Cycle de vie dune requte J SF
Rception
des valeurs
Validation
d l
VueJ SF
Requt
e
Construction de la vue interne
Reception des valeurs par le contrleur
+ Convertion des valeurs
1
2
3
Pagesjsp 20
Mise jour
des beans
des valeurs
Traitement
(application)
Rendu dela
rponse
Rponse
Gestion des evts +
Calcul de la navigation
4
5
6
tapes 1-2
1 - Constrution de la vue dentre : recrer
l'arborescence des composants qui composent la
page dorigine. Cette arborescence est stocke
dans un objet de type FacesContext et sera utilise
tout au long du traitement de la requte.
Pagesjsp 21
2 - Rception des valeurs trouves dans le
FaceContext. Durant cette phase des oprations de
convertions sont ralises pour permettre de
transformer les valeurs stockes sous forme de
chane de caractres dans la requte HTTP en un
type utilis pour le stockage des donnes.
tapes 3 - 4
3 - Validation : les donnes extraites sont
valides en appliquant des validateurs enregistrs
auprs de chaque composant. Les ventuelles
erreurs de conversions sont stockes dans le
FaceContext. Dans ce cas derreur, l'tape suivante
est directement ltape 6 pour rafficher la mme
Pagesjsp 22
page avec les valeurs saisies et signifier les erreurs
4 - Synchronisation du modle : Cette tape
permet de stocker dans les composants du
FaceContext leur valeur locale valide respective.
Les ventuelles erreurs de conversions sont
stockes dans le FaceContext. Dans ce cas, l'tape
suivante est directement ltape 6
tapes 5-6
5 - Invoquer lapplication : dans cette tape, le
ou les vnements mis dans la page sont traits.
On dtermine quelle sera la page rsultat qui sera
renvoyedanslarponseenutilisant lesrglesde
Pagesjsp 23
renvoye dans la rponse en utilisant les rgles de
navigation dfinie dans l'application.
L'arborescence des composants de cette page
rsultat est cre.
6 - Rendu de la rponse : cette tape se charge de
crer le rendue de la page de la rponse.
Identification des 6 phases
Possibilit de spcifier des l i st er ner s dclanchs aux
instants significatifs des phases dexcution du contrleur
La classe j avax. f aces. event . PhaseI d dfinit des
constantes qui identifient chacune des 6 phases
PhaseI d. RESTORE_VI EW,
PhaseI d APPLY REQUEST VALUES
Pagesjsp 24
PhaseI d. APPLY_REQUEST_VALUES,
PhaseI d. PROCESS_VALI DATI ONS,
PhaseI d. UPDATE_MODEL_VALUES,
PhaseI d. I NVOKE_APPLI CATI ON
PhaseI d. RENDER_RESPONSE
La constante PhaseI d. ANY_PHASE permet de demander
l'application du l i st ener toutes les phase (debuggage)
5
Exemple : Ecout eur (traceur)
Un couteur implmente la classe
j avax. f aces. event . PhaseLi st ener
import j avax. f aces. event . PhaseEvent ;
import j avax. f aces. event . PhaseI d;
import j avax. f aces. event . PhaseLi st ener ;
public class Ecout eur implements PhaseLi st ener {
public void af t er Phase( PhaseEvent pe) {
Pagesjsp 25
public void af t er Phase( PhaseEvent pe) {
Syst em. out . pr i nt l n( "Apres " + pe. get PhaseI d( ) ) ;
}
public void bef or ePhase( PhaseEvent pe) {
Syst em. out . pr i nt l n( "Avant " + pe. get PhaseI d( ) ) ;
}
public PhaseId get PhaseI d( ) {
return PhaseId.ANY_PHASE;
}
Enregistrement dun
PhaseLi st ener
Fichier de configuration server Faces
<f aces- conf i g>
. . .
<l i f ecycl e>
Pagesjsp 26
<l i f ecycl e>
<phase- l i st ener >l i b. PhasesEcout eur
</ phase- l i st ener >
</ l i f ecycl e>
Controleur 2
public void set Fi r st Number ( int aFi r st Number ) {
this. f i r st Number = aFi r st Number ;
}
public int get Fi r st Number ( ) {
return f i r st Number ;
}
Pagesjsp 65
public int get Resul t ( ) {
return r esul t ;
}
public void set SecondNumber ( int aSecondNumber ) {
this. secondNumber = aSecondNumber ;
}
public int get SecondNumber ( ) {
return secondNumber ;
}
Controleur 3
public St r i ng add( ) {
r esul t = cal cul at or . add( f i r st Number ,
secondNumber ) ;
return " success" ;
Pagesjsp 66
return success ;
}
public St r i ng mul t i pl y( ) {
r esul t = cal cul at or . mul t i pl y( f i r st Number ,
secondNumber ) ;
return " success" ;
}
12
Bean supervis
<managed- bean>
<managed- bean- name>
CalcBean
</ managed- bean- name>
<managed- bean- cl ass>
Pagesjsp 67
<managed bean cl ass>
fr.ifsic.test.CalculatorController
</ managed- bean- cl ass>
<managed- bean- scope>
session
</ managed- bean- scope>
</ managed- bean>
Rgle de navigation
<navi gat i on- r ul e>
<f r om- vi ew- i d>
/calculator.jsp
</ f r om- vi ew- i d>
Pagesjsp 68
</ f r omvi ew i d>
<navi gat i on- case>
<f r om- out come>success</ f r om- out come>
<t o- vi ew- i d>/result.jsp</ t o- vi ew- i d>
</ navi gat i on- case>
</ navi gat i on- r ul e>
cal cul at or . j sp
Pagesjsp 69
cal cul at or . j sp 1
<ht ml xml ns=" ht t p: / / www. w3. or g/ 1999/ xht ml "
xml ns: h=" ht t p: / / j ava. sun. com/ j sf / ht ml "
xml ns: f =" ht t p: / / j ava. sun. com/ j sf / cor e" >
<f : vi ew>
Pagesjsp 70
<f : vi ew>
<h: f or mi d=" cal cFor m" >
</ h: f or m>
</ f : vi ew>
</ ht ml >
cal cul at or . j sp 2
<h: panel Gr i d col umns=" 3" >
<h: out put Label val ue=" Fi r st Number " / >
<h: i nput Text i d=" f i r st Number "
val ue=" #{CalcBean.firstNumber}"
r equi r ed=" t r ue" / >
<h: message f or =" f i r st Number " / >
Pagesjsp 71
g /
<h: out put Label val ue=" Second Number " / >
<h: i nput Text i d=" secondNumber "
val ue=" #{CalcBean.secondNumber}"
r equi r ed=" t r ue" / >
<h: message f or =" secondNumber " / >
</ h: panel Gr i d>
cal cul at or . j sp 3
<h: panel Gr oup>
<h: commandBut t on i d="submi t Add"
act i on="#{CalcBean.add}"
val ue="Add" / >
Pagesjsp 72
val ue="Add" / >
<h: commandBut t on
i d="submi t Mul t i pl y"
act i on="#{CalcBean.multiply}"
val ue="Mul t i pl y" / >
</ h: panel Gr oup>
13
r esul t . j sp
Pagesjsp 73
r esul t . j sp 1
<f : vi ew>
Fi r st Number : <h: out put Text
i d=" f i r st Number "
val ue=" #{CalcBean.firstNumber}" / >
<br / >
Pagesjsp 74
Second Number : <h: out put Text
i d=" secondNumber "
val ue=" #{CalcBean.secondNumber}" / >
<br / >
Resul t : <h: out put Text i d=" r esul t "
val ue=" #{CalcBean.result}" / >
<br / >
</ f : vi ew>
Langage dexpression
Pagesjsp 75
Langage dexpression EL
Valeur Expression
Boolen car t . number Of I t ems>0
lment de tableau books[ 2]
l d ll i b k [ " f i t i " ]
Pagesjsp 76
lment dans une collection books[ " f i ct i on" ]
Proprit dun J ava bean l aPer sonne. nom
Proprit dun objet dans un
tableau
books[ 3] . pr i x
Proprit initialise dun
paramtre i ni t du contexte
i ni t Par am. quant i t e
Liste des objets implicites
appl i cat i onScope
Attributs de lapplication (Map)
cooki e
Cookies (Map)
f aceCont ext
Instance courante du contexte
Pagesjsp 77
header
HTTP headers (Map)
header Val ues
HTTP headers (Map of St r i ng[ ] )
i ni t Par am
Paramtres dinitialisation de lappli
par am
Paramtres de la requte (Map)
Liste des objets implicites (2)
r equest Scope
Attributs de la requte (Map)
sessi onScope
Attributsdelasession(Map)
Pagesjsp 78
sessi onScope
Attributs de la session (Map)
vi ew
La racine de larborescence des
composants pour cette requte
14
Oprateurs
+ - * / %di v mod oprateurs arithmtique
< <= > >= == ! =
l t l e gt ge eq ne
oprateurs de
comparaisons
Pagesjsp 79
&& | | ! and or not oprateurs logiques
Empt y un objet null, une chane
vide, un tableau ou une
collection sans lement,
? : oprateur ternaire de test
Internationalisation
Gestion de la langue
Pagesjsp 80
Gestion des dates/heures
.
Que peut-on internationaliser
Messages (dtat ou derreur)
Labels (simples ou sur les composants graphiques)
Dates et heures
N b l t i
Pagesjsp 81
Nombres, valeurs montaires
Numros de tlphone, adresses
Formules de politesse
Graphiques, images, couleurs, sons,
Et mme la disposition des pages !
Internationaliser les chanes ?
En anglais En franais
Pagesjsp 82
Messages_f r . pr oper t i es
ent et e_champNom= JSF sans effort
pr ompt = Donner votre nom :
si gne = !
t ext eDeBi envenue = Bienvenue JSF
Pagesjsp 83
t ext eDuBout on = Dire bonjour
Messages_en. pr oper t i es
ent et e_champNom= JSF KickStart
pr ompt = Tell us your name
si gne = !
t ext eDeBi envenue = Welcome to JSF,
t ext eDuBout on = Say Hello
Pagesjsp 84
y
15
<f : l oadBundl e> <h: out put Text >
<%@t agl i b ur i =" http://java.sun.com/jsf/html" pr ef i x=" h" %>
<%@t agl i b ur i =" http://java.sun.com/jsf/core" pr ef i x=" f" %>
<f : l oadBundl e basename=" lib.messages" var =" msg" / >
<ht ml >
<head>
<t i t l e>Page pour ent r er vot r e nom</ t i t l e>
Lecture des messages
Pagesjsp 85
<t i t l e>Page pour ent r er vot r e nom</ t i t l e>
</ head>
<body>
<f : vi ew>
<h1><h: out put Text val ue=" #{msg.entete_champNom}" / ></ h1>
. . . fomulaire . . .
</ f : vi ew>
</ body>
</ ht ml >
Utilisation dun des messages
Fichier de configuration
Les langues dans le fichier de configuration
<f aces- conf i g>
. . .
<appl i cat i on>
<l ocal e- conf i g>
Pagesjsp 86
<l ocal e conf i g>
<def aul t - l ocal e>f r </ def aul t - l ocal e>
<suppor t ed- l ocal e>en</ suppor t ed- l ocal e>
</ l ocal e- conf i g>
</ appl i cat i on>
. . .
</ f aces- conf i g>
Recherche dun fichier de proprits
Lorsque lutilisateur donne un ordre de prfrences
(dans son navigateur)
Pour chaque prfrence prise dans lordre de lutilisateur
j h h l b fi hi d l d
Pagesjsp 87
java cherche le bon fichier dans lordre :
1. Resources_language_country_variant.properties
2. Resources_language_country.properties
3. Resources_language.properties
4. Resources.properties
<h: out put For mat >
Message paramtr
Dclaration dans le fichier de ressources
mess = bonjour Mr {0}
Utilisationdansuncomposant J SF
Pagesjsp 88
Utilisation dans un composant J SF
<h: out put For mat val ue="#{msg.mess}">
<f : par amval ue="#{myBean.nom}"/ >
</ h: out put For mat >
Chargement dun fichier de
pr oper t i es par programme
Les fichiers de messages
/ games/ messsages. pr oper t i es peuvent tre
capts par progamme comme suit : :
Pagesjsp 89
FacesCont ext cont ext =
FacesCont ext . get Cur r ent I nst ance( ) ;
Resour ceBundl e msg =
Resour ceBundl e. get Bundl e( "game.messages" ,
cont ext . get Vi ewRoot ( ) . get Local e( ) ) ;
St r i ng t ext e = msg. get St r i ng( " how_to_play") ;
Sortie conditionnelle
Attribut r ender ed
<h: out put Text val ue=" Je vous ai
reconnu"
Pagesjsp 90
reconnu
r ender ed=" #{PersonneBean.user
Name=='bekkers'}" / >
16
Librairie core (1)
f : vi ew, f : subvi ew
Vue principale, sous-vue
f : f acet
Qualifier un lment
f : at t r i but e
Ajouter un attribut, un composant
f : par am
Passer un paramtre un composant
Pagesjsp 91
f : l oadBundl e
charger un fichier de properties
f : ver bat i m
ajouter un texte brut la vue
f : sel ect I t em
Un lment dans un composant
choix
f : sel ect I t ems
Groupe dlments dans un
composant choix
Librairie core (2)
f : act i onLi st ener Ajouter un listener daction
composant
f : conver t Dat eTi me
Conversion date/heure
f : conver t Number
Conversion numrique
f : val i dat or
Ajouter un validateur spcifique
Pagesjsp 92
j p q
f : val i dat eDoubl eRange
Validation plage de rels
f : val i dat eLengt h
Validation longueur de valeur
f : val i dat eLongRange
Validation plage dentiers
f : val ueChangeLi st ener
Associer un listener de changement
de valeur un composant
<f:setPropertyActionListener>
Il doit obligatoirement tre dfini comme
fils d'un composant d'action
<h: commandLi nk>, <h: commandBut t on>.
Pagesjsp 93
Affecter une valeur une cible avant
l'excution d'une action donne
Deux attributs
target Le champ cible ( qui la valeur sera affecte)
value La valeur affecter au champ cible
Ajouter des objets aux composants html
La plupart des tags de la librarie core ajoutent
des objets aux composants html
Attribute
Listener
Pagesjsp 94
Listener
Converter
Validator
Facet
Parameter
Select item
Librairie html
Pagesjsp 95
<h: out put Text >
<h: gr aphi cI mage>
<h: out put Text
val ue=" #{f or m. t est St r i ng}" / >
<h: out put Text val ue=" Number
#{f or m. number }" / >
<h: out put Text val ue=" <i nput t ype= t ext
val ue= hel l o / >" / >
Pagesjsp 96
val ue hel l o / > / >
<h: out put Text escape=" t r ue"
val ue=" <i nput t ype= t ext
val ue= hel l o / >" / >
<h: gr aphi cI mage
val ue=" / t j ef f er son. j pg" / >
<h: gr aphi cI mage val ue=" / t j ef f er son. j pg"
st yl e=" bor der : t hi n sol i d bl ack" / >
17
<h: out put For mat > <f : par am>
Texte paramtr
<h: out put For mat val ue=" {0} est
ag de {1} ans" >
Pagesjsp 97
<f : par amval ue=" Jaques" / >
<f : par amval ue=" 25" / >
</ h: out put For mat >
<h: panel Gr oup>
Regroupements
<h: panel Gr oup>
<h: out put Text val ue=" one r ow" / >
<h: out put Text val ue=" " / >
Pagesjsp 98
<h: out put Text
val ue=" gr ouped wi t h panel Gr oup" / >
</ h: panel Gr oup>
one r ow gr ouped wi t h panel Gr oup
Affichage conditionnel dun groupe
Attribut @renderer
<h: panel Gr oup r ender ed=" #{myBean.number>10}" >
<h: out put Label i d=" isl2" f or =" is2" >
h l " bl bl " /
Pagesjsp 99
<h: out put Text val ue=" blabla" / >
</ h: out put Label >
<h: i nput Text i d=" is2" / >
<h: commandBut t on val ue=" Go!" / >
</ h: panel Gr oup>
<h: i nput Text >
<h: i nput Secr et >
<h: i nput Text val ue=" #{f or m. t est St r i ng}"
r eadonl y=" t r ue" / >
<h: i nput Secr et val ue=" #{f or m. passwd}"
r edi spl ay=" t r ue" / >
<h: i nput Secr et val ue=" #{f or m. passwd}"
I mpossible d'afficher l'imagelie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez que la liaison pointe vers le fichier et l'emplacement corrects.
I mpossible d'afficher l'imagelie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez que la liaison pointe vers le fichier et l'emplacement corrects.
I mpossible d'afficher l'imagelie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez que la liaison pointe vers le fichier et l'emplacement corrects.
Pagesjsp 100
r edi spl ay=" f al se" / >
<h: i nput Text val ue=" i nput Text "
st yl e=" col or : Yel l ow;
backgr ound: Teal ; " / >
<h: i nput Text val ue=" 1234567" si ze=" 5" / >
<h: i nput Text val ue=" 1234567890"
maxl engt h=" 6" si ze=" 10" / >
I mpossible d'afficher l'imagelie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez que la liaison pointe vers le fichier et l'emplacement corrects.
I mpossible d'afficher l'image lie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez quela liaison pointe vers le fichier et l'emplacement corrects.
I mpossible d'afficher l'image lie. Le fichier a peut-tre t dplac, renomm ou supprim. Vrifiez que la liaison pointe vers lefichier et l'emplacement corrects.
<h: i nput Text ar ea>
<h: i nput Text ar ea r ows=" 5" / >
<h: i nput Text ar ea col s=" 5" / >
Pagesjsp 101
<h: i nput Text ar ea
val ue=" 123456789012345"
r ows=" 3" col s=" 10" / >
<h: i nput Text ar ea
val ue=" #{f or m. dat aI nRows}"
r ows=" 2" col s=" 15" / >
<h: commandBut t on>
<h: commandLi nk>
Navigation J SF
<h: commandBut t on val ue=" submi t "
t ype=" submi t "/ >
Pagesjsp 102
<h: commandLi nk>
<h: out put Text val ue="r egi st er "/ >
</ h: commandLi nk>
<h: commandLi nk>
<h: out put Text val ue=" #{msgs. l i nk}" / >
<h: gr aphi cI mage val ue="/ r egi s. j pg" / >
</ h: commandLi nk>
18
<h: out put Li nk>
Liens html simples
<h: out put Li nk val ue=" #i nt r oduct i on" >
<h: out put Text val ue=" I nt r oduct i on"
st l e "f ont st l e i t al i c"/ >
Pagesjsp 103
st yl e="f ont - st yl e: i t al i c"/ >
</ h: out put Li nk>
<h: out put Li nk val ue=" #t oc
t i t l e="Go t o t he t abl e of cont ent s" >
<f : ver bat i m>
<h2>Tabl e of Cont ent s</ h2>
</ f : ver bat i m>
</ h: out put Li nk>
<h: panel Gr i d> Tableaux
<h: panel Gr i d col umns=" 4" f oot er Cl ass=" subt i t l e"
header Cl ass=" subt i t l ebi g" st yl eCl ass=" medi um"
col umnCl asses=" subt i t l e, medi um" >
<f : f acet name=" header " >
<h: out put Text val ue=" Tabl e wi t h number s" / >
</ f : f acet >
<h: out put Text val ue="1" / ><h: out put Text val ue=" 2" / >
Classes CSS
Pagesjsp 104
<h: out put Text val ue= 1 / ><h: out put Text val ue= 2 / >
<h: out put Text val ue="3" / ><h: out put Text val ue=" 4" / >
<h: out put Text val ue="5" / ><h: out put Text val ue=" 6" / >
<h: out put Text val ue="7" / >
<f : f acet name=" f oot er " >
<h: out put Text val ue=bl abl a" / >
</ h: panel Gr oup>
</ f : f acet >
</ h: panel Gr i d>
<h: panel Gr i d> rendu
Table with numbers
blabla
Pagesjsp 105
1 2 3 4
5 6 7
List, tableau
<h: dat aTabl e> <h: col umn>
<h: dat aTabl e i d=" books" val ue=" #{BookStore.items}"
var =" store" >
<h: col umn>
<f : f acet name=" header " >
<h: out put Text val ue=" #{msg. st or eNameLabel }" / >
</ f : f acet >
<h: out put Text val ue=" #{store.name}" / >
</ h: col umn>
<h: col umn>
Pagesjsp 106
<f : f acet name=" header " >Subj ect </ f : f acet >
<h: out put Text val ue=" #{store.subject}" / >
</ h: col umn>
<h: col umn>
<f : f acet name=" header " >
<h: out put Text val ue=" #{msg. st or ePr i ceLabel }" / >
</ f : f acet >
<h: out put Text val ue=" #{store.price}" / >
</ h: col umn>
</ h: dat aTabl e>
<h: dat aTabl e> <h: col umn>
rendu
Title Subject Price ($)
J SF For J SF 25.0
Pagesjsp 107
J SF For
Dummies
J SF 25.0
Struts For
Dummies
Struts 22.95
Attribut @val ue dun lment
<h: dat aTabl e>
@val ue reprsente une collection sur la quelle
litration sur les lignes du tableau porte
@var contient le nom de la variable courante
Pagesjsp 108
ditration
<h: dat aTabl e i d=" books"
val ue=" #{BookStore.items}"
var =" store" >
Pagesjsp 146
</ h: f or m>
</ ui : def i ne>
</ ui:composition>
Outils
Pagesjsp 147
Des librairies J SF
La dernire version officielle de Sun
http://java.sun.com/j2ee/javaserverfaces
Myfaces dApache
htt // f h /
Pagesjsp 148
http://myfaces.apache.org/
Oracle ADF Faces
http://www.oracle.com/technology/products/jdev/htdocs/p
artners/addins/exchange/jsf/index.html
J Scape WebGalileo Faces
http://www.jscape.com/webgalileofaces/dload.html
Editeurs J SF graphiques
Oracle J Developer 10.1.3
http://www.oracle.com/technology/products/jdev/index.html
Sun J ava Studio Creator's J SF Visual Editor
http://developers.sun.com/prodtech/javatools/jscreator/
IBM Websphere Application Developer's J SF enabled J SP
Visual editor
http://www-
Pagesjsp 149
p
128.ibm.com/developerworks/websphere/techjournal/0401_barcia/bar
cia.html
MyEclise's J SF Visual Editor
http://www.myeclipseide.com/ContentExpress-display-ceid-54.html
J Builder de Borland
http://www.borland.com/us/products/jbuilder/index.html
J avaServer Faces Tooling Project (gratuit, venir)
http://www.eclipse.org/proposals/eclipse-jsf/
Oracle J Developer 10.1.3
Pagesjsp 150
26
Sun J ava Studio Creator's J SF Visual
Editor
Pagesjsp 151
IBM Websphere Application
Developer
Pagesjsp 152
MyEclise
Pagesjsp 153
Inconvnients de J SF
J SF utilise POST uniquement.
Impossibilit de garder la rfrence dune page
Les noms de fichiers sont diffrents des
URL
Pagesjsp 154
URL
Noms fichier se terminent par *.J SP
URL se terminent par *.J SF
Pas de possibilit dutiliser javascript
Validation cot client impossible
Technologies MVC concurrentes
Struts (le plus ancien) tend tre remplac
par les autres J SF est dit plus flexible
http://struts.apache.org/
Pagesjsp 155
http://struts.apache.org/
Spring (le tout dernier) voir
pour la petite histoire, J SF est fortement
inspir des WebForms du framework
Microsoft ASP.NET
Rfrences
Pagesjsp 156
27
Un tableau de rfrence sur les
composants graphiques J SF
bl d f d h l
Pagesjsp 157
Tableau de rfrence des composant J SF html
http://www.exadel.com/tutorial/jsf/jsftags-
guide.htmlrfrence
Quelques Articles
A first look at J avaServer Faces by David Geary
http://www.javaworld.com/javaworld/jw-11-2002/jw-1129-jsf.html
Developing Web Applications with J avaServer Faces by
Qusay H. Mahmoud
htt //d l j /d l /t h i lA ti l /GUI/J S F /
Pagesjsp 158
http://developer.java.sun.com/developer/technicalArticles/GUI/J avaServerFaces/
J avaServer Faces: A standard-based solution for J ava
Web applications by Murali Kaundinya & J amiel Sheikh
http://sys-con.com/java/source.cfm?id=1991
"Putting a New Face on Web Interfaces" by Peter Varhol
http://www.fawcette.com/javapro/2003_04/magazine/columns/weblication/
"Introducing J avaServer Faces" by Budi Kurniawan
http://www.onjava.com/pub/a/onjava/2003/07/30/jsf_intro.html
Autres rfrences
Rappel : Tutorial de sun (1500 pages)
(pdf) http://java.sun.com/j2ee/1.4/docs/tutorial-
update2/doc/J 2EETutorial.pdf
Un tutorial Exadel
http://www.exadel.com/tutorial/jsf/jsftutorial-
kickstart html
Pagesjsp 159
kickstart.html
J ames Holmes J ava Server Faces Links
http://www.jamesholmes.com/J avaServerFaces/
J ava Server Faces central
http://www.jsfcentral.com/
La page officielle J SF chez Sun
http://java.sun.com/j2ee/javaserverfaces/