VariableInfo-Klasse |
Klassenname:
javax.servlet.jsp.tagext.VariableInfo
Erweitert:
Keine
Implementiert:
Keine
Implementiert von:
Interne containerabhängige Klasse. Die meisten Container verwenden die Verweisimplementierung der Klasse (im Apache Jakarta-Projekt entwickelt).
Beschreibung
Instanzen von VariableInfo werden von TagExtraInfo-Unterklassen erstellt, um alle Skriptvariablen zu beschreiben, die von der entsprechenden Tag-Prozedurklasse erstellt werden.
Beispiel
Dieses Beispiel zeigt eine TagExtraInfo-Unterklasse für eine benutzerdefinierte Aktion, die eine Variable erstellt, deren Name vom Attribut id und deren Java-Typ vom Attribut className angegeben wird:
    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)
        };
      }
    }
Der Webcontainer ruft getVariableInfo() während der Übersetzung auf. Die Rückgabe besteht aus einem Array aus VariableInfo-Objekten, und zwar je ein Objekt für jede Variable, die von der Tag-Prozedur bereitgestellt wird. Die Klasse VariableInfo ist ein einfaches Bean mit vier Eigenschaften, die ursprünglich die Werte haben, die als Argumente an den Konstruktor übergeben werden: varName, className, declare und scope. varName ist der Name der Skriptvariable, und className ist der Name ihrer Klasse. Die Eigenschaft declare ist ein boolean-Wert. true bedeutet, dass eine völlig neue Variable von der Aktion erstellt wird (das heißt, eine Deklaration der Variable muss dem generierten Servlet hinzugefügt werden). Der Wert false bedeutet, dass die Variable bereits von einer anderen Aktion oder von einem anderen Vorkommen derselben Aktion erstellt wurde, so dass der generierte Code die Deklaration bereits enthält. In diesem Fall muss der Container der Variablen lediglich einen neuen Wert zuweisen. Die Eigenschaft scope hat nichts mit den JSP-Ebenen zu tun, die Sie bisher kennen gelernt haben (Seite, Anforderung, Sitzung und Anwendung). Stattdessen definiert die Eigenschaft, wo die neue Variable für JSP-Skriptelemente zur Verfügung steht. Der Wert AT_BEGIN bedeutet, dass sie vom Start-Tag der Aktion bis nach dem End-Tag der Aktion verfügbar ist. AT_END bedeutet, dass die Variable erst nach dem End-Tag der Aktion zur Verfügung steht. Eine Variable mit der Ebene NESTED ist nur im Body der Aktion verfügbar, also zwischen den Anfangs- und End-Tags. Die Ebene steuert daher, ob der Code für die Variablendeklaration und die Wertzuweisung generiert wird. Die Tag-Prozedurklasse muss sicherstellen, dass die Variable in einer JSP-Ebene zur passenden Zeit verfügbar ist, beispielsweise in der Methode doStartTag() für die Ebenen AT_BEGIN und NESTED und in der Methode doEndTag() für die Ebene AT_END. Für ein BodyTag, das den Body durchläuft, kann der Wert auch in der Methode doAfterBody() aktualisiert werden, um einen neuen Wert für jede Iteration bereitzustellen.

VariableInfo() |
public VariableInfo(String varName, String className, boolean declare, int scope)
Erstellt eine neue Instanz mit den angegebenen Werten.

getClassName() |
public String getClassName()
Gibt den Java-Typ der Skriptvariable zurück.

getDeclare() |
public boolean getDeclare()
Gibt true zurück, wenn der Webcontainer eine Deklarationsanweisung für die Skriptvariable erstellt. Andernfalls lautet die Rückgabe false (wird verwendet, wenn die Variable bereits von einer anderen Tag-Prozedur deklariert wurde und nur von der Tag-Prozedur aktualisiert wird, die der TagExtraInfo-Unterklasse entspricht, die diese Instanz von VariableInfo erstellt).

getScope() |
public int getScope()
Gibt einen der folgenden Werte zurück: AT_BEGIN (die Skriptvariable ist vom Anfangs-Tag bis zum Ende der JSP-Seite verfügbar), AT_END (die Variable ist nach dem End-Tag bis zum Ende der JSP-Seite verfügbar) oder NESTED (die Variable ist nur zwischen dem Anfangs-Tag und dem End-Tag verfügbar).

getVarName() |
public String getVarName()
Gibt den Variablennamen zurück.