Serializable
;
<jsp:userBean>
. Cette déclaration permet d'associer un nom à un bean. Ce nom peut être ensuite utilisé dans la page, comme s'il s'agissait d'un champ normal.
Exemple 46. Déclaration d'un bean dans une page
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="marin" beanName="marin" scope="request" type="org.paumard.cours.model.Marin"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <p>Using <%=marin%> ; </p> </body> </html>
id
: désigne le nom du champ qui porte la référence à ce bean. Ici
marin
.
beanName
: la présence de cet attribut indique que l'on utilise un bean qui a été créé par ailleurs. Ce bean doit se trouver sur l'un des contextes définis dans l'API servlet : la page, la requête, la session ou l'application. La valeur de cet attribut donne la clé à laquelle ce bean a été associé, par invocation d'une méthode
setAttribute(beanName, ...)
.
scope
: attribut qui indique le contexte dans lequel le bean existe. Cet attribut peut prendre les valeurs
page
,
request
,
session
ou
application
. Dans le cas d'un bean existant, ce contexte doit obligatoirement être précisé. Le moteur de JSP ira chercher ce bean dans le contexte indiqué, par invocation d'une méthode
getAttribute()
.
type
: cet attribut indique la classe du bean déclaré. Cette classe doit bien sûr être connue de l'application Web. Dans notre exemple, on affiche simplement ce bean dans la page. Sa méthode
toString()
sera automatiquement appelée.
beanName
, qui indique que le bean doit exister dans un contexte donné par l'attribut
scope
. Ensuite, plutôt que d'indiquer la classe de ce bean dans l'attribut
type
, on le déclare dans l'attribut
class
.
Dans ce cas, le moteur de JSP crée ce bean, et le range en tant qu'attribut du contexte indiqué dans l'attribut
scope
.
On peut enfin préciser les valeurs des propriétés de ce bean de ceux façons :
value
de l'élément
setProperty
;
param
de l'élément
setProperty
.
Exemple 47. Création d'un bean dans une page
<jsp:useBean id="marin" scope="page" class="org.paumard.cours.model.Marin"> <jsp:setProperty name="marin" property="nom" value="Surcouf"/> <jsp:setProperty name="marin" property="prenom" param="prenom"/> <jsp:setProperty name="marin" property="age" param="age"/> </jsp:useBean>
Marin
, et on l'associe au nom de champ
marin
. Le contexte de ce bean est la page, il ne sera donc pas disponible ailleurs que dans cette page. En particulier, si cette page fait appel à d'autres pages, ou à d'autres servlets, ces autres éléments n'auront pas accès à ce bean.
Les trois propriétés
nom
,
prenom
et
age
de ce bean sont fixées par les sous-éléments
setProperty
. Ces sous-élements prennent en attribut :
name
: le nom du bean, tel que déclaré dans l'attribut
id
de l'élément
useBean
.
property
: le nom de la propriété que l'on fixe. Il doit exister un
setter
associé.
value
: si cet attribut est précisé, alors la propriété prendra la valeur indiquée.
param
: si cet attribut est utilisé, alors la propriété prendra la valeur du paramètre de la requête donc le nom est indiqué. Cela permet de créer directement un pont entre les paramètres présents sur la requête et les propriétés d'un bean.
<%=
et
>
. On peut utiliser une syntaxe plus légère, comme dans l'exemple suivant.
Exemple 48. Lecture d'une propriété
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <jsp:useBean id="marin" beanName="marin" scope="session" type="org.paumard.cours.model.Marin"/> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <p>Nom = ${marin.nom}</p> </body> </html>
id
de l'élément
useBean
qui a servi à le déclarer), et à indiquer la propriété que l'on veut exploiter en utilisant le séparateur
.
. Le tout doit être mis entre accolades, et précédé par le caractère
$
.
Dans ce cas, la propriété sera affichée dans la page. Si elle est non nulle, alors le moteur de JSP utilisera sa méthode
toString()
.