Institut Supérieur De Gestion De Tunis cours AJEE
3
ème
LFIG BAYOUDHI Chaouki
1
Les Marqueurs JSF 2.0
I- La bibliothèque standard de marqueurs JSP (JSTL) :
JSTL est un ensemble de marqueurs standard permettant d’éviter le mélange du
code Java et des marqueurs XHTML : grâce â elle, vous pouvez manipuler les données
dynamiques contenues dans une JSP en utilisant des marqueurs XML au lieu de
passer par du code Java.
Les actions possibles vont de l’affectation d’une valeur à un objet à la capture des
exceptions en passant par le contrôle avec des conditions et des itérations et par
l’accès aux bases de données.
Une bibliothèque de marqueurs est une collection de fonctions pouvant être utilisées
dans une page JSP ou JSF.
Ci-dessous une énumération de ces fonctions, les
URI
permettant de référencer les
bibliothèques et les préfixes associés (ce sont ceux que l’on utilise le plus souvent,
mais ils peuvent être modifiés).
Bibliothèques de marqueurs JSTL :
Domaine URI Préfixe
Noyau
http://java.sun.com/jsp/jstl/core
c
Traitement XML
http://java.sun.com/jsp/jstl/xml
x
T18N
et formatage
http://java.sun.com/jsp/jstl/fmt
fmt
Accès aux BD
http://java.sun.com/jsp/jstl/sql
sql
Fonctions
http://java.sun.com/jsp/jstl/functions
fn
Remarque :
Avant de pouvoir utiliser ces actions, la JSP doit importer
l’URI
de la bibliothèque
et choisir un préfixe, soit en utilisant une directive JSP avec le système de
marqueurs de JSP, soit en utilisant une syntaxe XML :
<%@ taglib
uri=”
http://java.sun.com/jsp/jstl/core
prefix=”
c
%>
// ou
<jsp:root xmlns:jsp=”http://java.sun.com/JSP/Page”
xmlns:
c="http://java.sun.com/jstl/core"
version=”1.2”>
Avec cette claration, vous pouvez ensuite utiliser toutes les actions de la
biblio- thèque des marqueurs fondamentaux en utilisant le préfixe
c
:
<c:set var=
upperLimit
value=
20
/>
Ce code initialise la variable upperLimit avec la valeur 20.
Institut Supérieur De Gestion De Tunis cours AJEE
3
ème
LFIG BAYOUDHI Chaouki
2
1. Actions fondamentales :
Les actions fondamentales, énumérées ci-dessous, fournissent des marqueurs pour
manipuler des variables, traiter les erreurs, effectuer des tests et exécuter des boucles
et des itérations.
Action Description
<c:out>
Évalue une expression et affiche son résultat.
<c:set>
Initialise la valeur d’un objet.
<c:remove>
Supprime une variable.
<c:catch>
Capture une exception
java.lang.Throwable
lancée par
l’une de ses actions imbriquées.
<c:if>
Teste si une expression est vraie.
<c:choose>
Fournit plusieurs alternatives exclusives.
<c:when>
Représente une alternative dans une action
<c:choose>
.
<c:otherwise>
Représente la dernière alternative d’une action
<c:choose>
.
<c:forEach>
Répète son corps pour chaque élément d’une collection ou un
nombre
fix
é de fois.
<c:forTokens>
Itère sur une liste de tokens (lexèmes) séparés par des virgules.
<c:import> Importe une ressource.
<c:url> Encode une URL.
<c:param> Ajoute des paramètres de requête â une URL.
<c:redirect>
Redirige vers une URL précise.
Exemple :
Une JSP qui boucle sur les nombres de 3 â 15 en affichant, pour chacun d’eux, s’il est
pair ou impair.
<jsp:root xmlns:jsp=
http://java.sun.com/JSP/Page
xmlns:c="http://java.sun.com/jstl/core"
version=”1.2”>
<html>
<body>
<
c:set
var=”upperLimit” value=”20”/>
<
c:forEach
var=”i” begin=”3”
end=”
${upperLimit
5}
”>
<
c:choose
>
<c:when
test=”${i%2
==
0}”>
<
c:out
value=”${i}
is
even”/><br/>
</c:when>
<c:otherwise>
<c:out
value=”${i}
is
odd”/><br/>
</c:otherwise>
</c:choose>
</c:forEach>
</body>
</html>
Institut Supérieur De Gestion De Tunis cours AJEE
3
ème
LFIG BAYOUDHI Chaouki
3
Pour utiliser la bibliothèque des marqueurs fondamentaux, la page doit importer son
URI
avec un préfixe. Puis elle affecte la valeur 20 à la variable
upperLimit
à
l’aide du marqueur
<c:set>
et itère sur tous les nombres compris entre 3 et 15 (nous
avons volontairement ajouté une expression arithmétique
${upperLimit 5}).
La valeur de l’indice (la variable
i)
est testée à chaque tour de boucle pour savoir
si elle est paire ou impaire (
<c:when
test=”${i%2
==
0}”>).
Le marqueur
<c:out>
affche ensuite la valeur de l’indice, accompagnée du texte
“est pair“ ou “est impair“.
Vous pouvez remarquer que tout le traitement s’effectue grâce aux marqueurs, que
cette page est conforme â XML et qu’elle peut être comprise par les développeurs
qui ne connaissent pas Java.
2. Actions de formatage :
Les actions de formatage, énumérées ci-dessous, permettent de formater des dates,
des nombres, des valeurs monétaires et des pourcentages. Vous pouvez aussi obtenir
ou modifier les locales (variables de langue) et les zones horaires et obtenir
l’encodage de la page web.
Action Description
<fmt:message>
Tnternationalise
une JSP en extrayant un
message en fonction de la langue.
<fmt:param>
Fournit un paramètre â
<fmt:message>
.
<fmt:bundle>
Tndique
le paquetage contenant les messages par langue.
<fmt:setLocale>
Fixe la langue â utiliser.
<fmt:requestEncoding>
Fixe l’encodage des caractères de la requête.
<fmt:timeZone>
Précise la zone horaire du format de l’heure.
<fmt:setTimeZone>
Stocke la zone horaire indiquée dans une variable.
<fmt:formatNumber>
Formate une valeur numérique (nombre,
monnaie, pourcentage) selon la locale.
<fmt:parseNumber
> Analyse la représentation textuelle des nombres, des
valeurs monétaires et des pourcentages.
<fmt:formatDate>
Formate les dates et les heures selon la langue.
<fmt:parseDate>
Analyse la représentation textuelle des dates et des heures.
Exemple :
<%@ page contentType=”text/html;charset=UTF-8
language=”java”
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c"
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt"
%>
<html>
<body> Dates :
<c:set
var=
now
value=”<%=new
java.util.Date()%>”/>
<
fmt:formatDate
type=”time” value=”${now}”/>
Institut Supérieur De Gestion De Tunis cours AJEE
3
ème
LFIG BAYOUDHI Chaouki
4
<fmt:formatDate
type=”date” value=”${now}”/>
<fmt:formatDate
type=”both” dateStyle=”short” timeStyle=”short”
value=”${now}”/>
<fmt:formatDate
type=”both” dateStyle=”long” timeStyle=”long”
value=”${now}”/>
Currency :
<fmt:setLocale
value=”en_us”/>
<fmt:formatNumber
value=”20.50” type=”currency”/>
<fmt:setLocale
value=”en_gb”/>
<fmt:formatNumber
value=”20.50” type=”currency”/>
</body>
</html>
La page importe les bibliothèques des marqueurs fondamentaux et de formatage à
l’aide de directives
<%@ taglib>
.
La ligne
<c:set
var=”now” value=”<%=new
java.
util.Date()%>”/> initialise la
variable
now
avec la date courante, et le marqueur
<fmt:formatDate>
la
formate selon différents critères : uniquement l’heure, uniquement la date et les
deux ensemble.
La ligne
<fmt:setLocale
value=”en_us”/>
fix
e la langue américaine et formate
la valeur monétaire 20.50 pour obtenir $20.50. La locale est ensuite modifiée pour
la Grande-Bretagne afin que cette valeur soit exprimée en livres sterling.
3. Actions SQL :
Les actions SQL de la JSTL permettent d’effectuer des requêtes sur une base de
données (insertions, modifications et suppressions), d’accéder aux résultats de ces
requêtes et même de mettre en place un contexte transactionnel. Nous avons déjâ vu
comment accéder â une base de données avec les entités JPA et les EJB mais, pour
des applications spécifiques, on a parfois besoin d’accéder â une base â partir d’une
page web (pour une application web d’administration non critique utilisée
occasionnellement par un unique utilisateur, par exemple) : dans ce cas, les
marqueurs de la bibliothèque SQL peuvent se révéler utiles.
Action Description
<sql:query>
I
nterroge
une base de données.
<sql:update>
Exécute une instruction SQL
INSERT
,
UPDATE
ou
DELETE
.
<sql:transaction>
Établit un contexte transactionnel pour les marqueurs
<sql:query>
et
<sql:update>
.
<sql:setDataSource>
I
ndique
la source de données.
<sql:param>
Fixe les valeurs des marqueurs d’emplacements
d’une instruction SQL.
<sql:dateParam>
Fixe les valeurs des marqueurs d’emplacements
d’une instruction SQL pour les valeurs de type
java.util.Date
.
Institut Supérieur De Gestion De Tunis cours AJEE
3
ème
LFIG BAYOUDHI Chaouki
5
La page JSP ci-dessous accède à une base de données, récupère toutes les lignes de
la table
Livre
et les affiche.
<%@ page contentType=”text/html;charset=UTF-8
language=”java”
%>
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core”
prefix=”c
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql"
prefix="sql"
%>
<html>
<head>
<title>Tous Les Livres</title>
</head>
<body>
<h1>Liste de Livre</h1>
<hr/>
<sql:setDataSource dataSource="jdbc/ default"/>
<sql:query var="lstLvs">
select * from livre
</sql:query>
<table
border=”1”>
<tr>
<td>code</td>
<td>Title</td>
<td>Prix</td>
<td>Description</td>
<td>Nombre de pages</td>
<td>Illustrations</td>
</tr>
<c:forEach
var=”row”
items=”
${lstLvs.rows}
”>
<tr>
<td><c:out
value=”${row.code}”/></td>
<td><c:out
value=”${row.title}”/></td>
<td><c:out
value=”${row.prix}”/></td>
<td><c:out value=”${row.description}”/></td>
<td><c:out
value=”${row.nbPage}”/></td>
<td><c:out value=”${row.illustrations}”/></td>
</tr>
</c:forEach>
</table>
<hr/>
</body>
</html>
Cette JSP doit d’abord importer la bibliothèque
sql
avec une directive
<%@
taglib>
puis indiquer la source de données (ici, la source par défaut
jdbc/
default
fournie avec GlassFish).
1 / 13 100%