<jsp:useBean>  

L'action <jsp:useBean> permet d'associer un nom au bean Java dans l'une des étendues JSP et de le rendre disponible en tant que variable de script. Une première tentative de recherche d'un bean possédant le nom spécifié dans l'étendue spécifiée est effectuée. Si celui-ci est introuvable, une nouvelle instance de la classe spécifiée est créée.

Pour les attributs facultatifs, au moins une des valeurs class ou type doit être spécifiée. Si les deux le sont, la valeur class doit être affectable à la valeur type. L'attribut beanName doit être associé à l'attribut type ; il n'est pas valide associé à l'attribut class.

L'action est traitée dans les étapes suivantes :

  1. Rechercher un objet à partir des valeurs d'attribut id et scope.

  2. Attribuer à une variable de langage de script l'id donné du type ou de la class spécifié.

  3. Si l'objet est introuvable, initialiser la valeur de la variable avec une référence à l'objet recherché, cryptée pour le type spécifié. Cette opération termine le traitement de l'action. Si le corps de l'élément de l'action n'est pas vide, il est ignoré.

  4. Si l'objet ne figure pas dans l'étendue spécifiée et que ni la valeur class ni la valeur beanName ne sont spécifiées, une exception InstantiationException est déclenchée. Cette opération termine le traitement de l'action.

  5. Si l'objet ne figure pas dans l'étendue spécifiée et que l'attribut class spécifie une classe non abstraite avec un constructeur public no-args, une nouvelle instance de la classe est créée et associée à la variable de script et au nom spécifié dans l'étendue spécifiée. L'étape 7 est effectuée après cela.

    Si l'objet est introuvable et que la classe spécifiée ne répond pas à la configuration requise, une exception InstantiationException est déclenchée. Cette opération termine le traitement de l'action.

  6. Si l'objet ne figure pas dans l'étendue spécifiée et que l'attribut beanName est spécifié, la méthode instantiate() de la classe java.beans.Beans est invoquée avec le ClassLoader de l'instance de classe d'implémentation JSP et l'attribut beanName comme arguments. Si la méthode réussit, la nouvelle référence de l'objet est associée à la variable de script et au nom spécifié dans l'étendue spécifiée. L'étape 7 est effectuée après cela.

  7. Si le corps de l'élément de l'action n'est pas vide, il est traité. La variable de script est initialisée et disponible dans l'étendue du corps. Le texte du corps est traité comme dans les autres étapes : S'il y a du texte, il est transmis à la réponse ; les scriptlets et les balises d'action sont évalués.

    Un corps non vide permet généralement de terminer l'initialisation de l'instance créée. Dans ce cas, le corps contient des actions <jsp:setProperty> et des scriptlets. Cette opération termine le traitement de l'action.

Exemple :

<jsp:useBean id="clock" class="java.util.Date" />
beanName String
Valeur de la demande de délai acceptée : oui

Facultatif. Le nom du bean comme prévu par la méthode instantiate() de la classe Beans dans le paquet java.beans.

class String
Valeur de la demande de délai acceptée : non

Facultatif. Le nom qulifié complet de la classe du bean.

id String
Valeur de la demande de délai acceptée : non

Obligatoire. Le nom à affecter au bean dans l'étendue spécifiée et le nom de la variable de script.

scope String
Valeur de la demande de délai acceptée : non

Facultatif. L'étendue du bean : parmi l'une des valeurs page, request, session ou application. La valeur par défaut est page.

type String
Valeur de la demande de délai acceptée : non

Facultatif. Le nom qualifié complet de la classe du bean (c'est-à-dire, une superclasse ou une interface implémentée par la classe du bean).