Classe VariableInfo |
Nom de la classe :
javax.servlet.jsp.tagext.VariableInfo
Etend :
Aucun
Implémente :
Aucun
Implémentée par :
Classe interne dépendante du container. La plupart des containers utilisent l'implémentation de référence de la classe (développée dans le projet Apache Jakarta).
Description
Les instances VariableInfo sont créées par des sous-classes TagExtraInfo pour décrire les variables de script créées par la classe de gestionnaire de balises correspondante.
Exemple
Voici un exemple d'une sous-classe TagExtraInfo d'une action personnalisée créant une variable avec le nom spécifié par l'attribut id et le type Java spécifié par l'attribut className :
    package com.ora.jsp.tags.generic;
    import javax.servlet.jsp.tagext.*;
    public class UsePropertyTagExtraInfo
      extends TagExtraInfo {
      public VariableInfo[] getVariableInfo(TagData data) {
        return new VariableInfo[] {
          new VariableInfo(
            data.getAttributeString("id"),
            data.getAttributeString("className"),
            true,
            VariableInfo.AT_END)
        };
      }
    }
Le container web appelle getVariableInfo() pendant la phase de traduction. Elle renvoie une table d'objets VariableInfo, une table par variable introduite par le gestionnaire de balises. La classe VariableInfo représente un bean simple possédant quatre propriétés, initialisées sur des valeurs transmises comme arguments au constructeur : varName, className, declare et scope. varName correspond simplement au nom de la variable de script, et className représente le nom de la classe. La propriété declare représente une valeur boolean où true signifie qe l'action vient de créer une toute nouvelle variable (c'est-à-dire qu'une déclaration de la variable doit être ajoutée au servlet généré). Une valeur false signifie que la variable a déjà été créée par une autre action ou une autre occurrence de la même action de sorte que le code généré contient déjà la déclaration. En pareil cas, il suffit au container d'affecter une nouvelle valeur à la variable. La propriété scope est totalement différente des étendues JSP rencontrées précédemment (page, request, session et application). Au contraire, elle définit l'emplacement d'accès de la nouvelle variable pour les éléments de script JSP. Une valeur AT_BEGIN signifie que la variable est disponible à partir de la balise de début de l'action jusqu'après la balise de fin de l'action. Une valeur AT_END signifie que la variable n'est disponible qu'après la balise de fin de l'action. Une variable possédant une étendue NESTED n'est disponible que dans le corps de l'action, entre les balises de début et de fin. L'étendue contrôle par conséquent l'emplacement où la déclaration de variable et l'affectation de valeur sont générées, et la classe de gestionnaire de balises doit vérifier que la variable est disponible dans l'une des étendues JSP au moment opportun ; par exemple, dans la méthode doStartTag() pour les étendues AT_BEGIN et NESTED et la méthode doEndTag() pour l'étendue AT_END. Pour une méthode BodyTag itérant sur le corps, la valeur peut également être mise à jour dans la méthode doAfterBody() en vue de générer une nouvelle valeur à chaque itération.

VariableInfo() |
public VariableInfo(String varName, String className, boolean declare, int scope)
Crée une nouvelle instance avec les valeurs spécifiées.

getClassName() |
public String getClassName()
Renvoie le type Java de la variable de script.

getDeclare() |
public boolean getDeclare()
Renvoie la valeur true si le container web crée une instruction de déclaration pour la variable de script ; sinon, renvoie la valeur false (si la variable a déjà été déclarée par un autre gestionnaire de balises et n'est mise à jour que par le gestionnaire de balises correspondant à la sous-classe TagExtraInfo créant cette instance VariableInfo).

getScope() |
public int getScope()
Renvoie l'une des variables AT_BEGIN (variable de script disponible depuis la balise de début jusqu'à la fin de la page JSP), AT_END (variable disponible après la balise de fin jusqu'à la fin de la page JSP) ou NESTED (variable disponible uniquement entre les balises de début et de fin).

getVarName() |
public String getVarName()
Renvoie le nom de la variable.