クラス VariableInfo


  • public class VariableInfo
    extends ObjectSE
    タグによって(実行時に)作成または変更されるスクリプト変数に関する情報。この情報は TagExtraInfo クラスによって提供され、JSP の変換フェーズで使用されます。

    カスタムアクションによって生成されたスクリプト変数には、AT_BEGIN、NESTED、AT_END のいずれかのスコープが関連付けられています。

    返されたオブジェクトのクラス名(VariableInfo.getClassName)は、スクリプト変数の型を判別するために使用されます。スクリプト変数には、プリミティブ型にはできないスコープ付き属性から値が割り当てられるため、「ボックス化」されることに注意してください。プリミティブの代わりに java.lang.Integer などの型を使用する必要があります。

    クラス名は、完全修飾クラス名または短いクラス名にすることができます。

    完全修飾クラス名を指定する場合は、Web アプリケーションの CLASSPATH にあるクラスを参照する必要があります(Servlet 2.4 仕様を参照 - 基本的には WEB-INF/lib および WEB-INF/classes です)。そうしないと、変換時エラーが発生します。

    VariableInfo オブジェクトで短いクラス名が指定されている場合、クラス名は、カスタムアクションが表示されるページのインポートディレクティブのコンテキストでのパブリッククラスの名前でなければなりません。クラスは、Web アプリケーションの CLASSPATH にも含まれている必要があります(Servlet 2.4 仕様を参照 - 基本的には WEB-INF/lib および WEB-INF/classes です)。そうしないと、変換時エラーが発生します。

    使用コメント

    多くの場合、完全修飾クラス名は、タグライブラリに認識されているため、タグハンドラーと同じ JAR ファイルで配信されるクラスを参照します。その他のほとんどの場合、JSP プロセッサーが構築されているプラットフォーム(Jakarta EE など)にあるクラスを参照します。この方法で完全修飾クラス名を使用すると、使用箇所が構成エラーに対して比較的耐性があります。

    ショートネームは通常、カスタムアクションユーザー(作成者)から渡されたいくつかの属性に基づいてタグライブラリによって生成されるため、堅牢性が低くなります。たとえば、参照する JSP ページにインポートディレクティブがないと、無効なショートが発生します。名前クラスと変換エラー。

    同期プロトコル

    `scope` 属性の値は、生成されたプログラム内の変数の可視性には影響しません。これは、変数によって示されるオブジェクトへの追加の参照が存在する場所と期間に影響します。

    getVariableInfo の呼び出しの結果は、VariableInfo オブジェクトの配列です。各オブジェクトは、スクリプト変数の名前、型、変数が新規かどうか、スコープを指定して、スクリプト変数を記述します。スコープは、図で説明するのが最も適切です。

    NESTED, AT_BEGIN and AT_END Variable Scopes

    JSP 2.0 仕様では、3 つの値の解釈を定義しています。

    • NESTED (スクリプト変数が、それを定義するアクションの開始タグと終了タグ間の呼び出しページと同期されている場合)。
    • AT_BEGIN: スクリプト変数が、それを定義するアクションの開始タグからスコープの終わりまで呼び出しページと同期されている場合。
    • AT_END: スクリプト変数が、それを定義するアクションの終了タグの後、スコープの終了まで呼び出しページと同期される場合。
    変数のスコープ値は、次の表に示すように、どのメソッドがその値に影響を与える可能性があるか、同期が必要な場所を示します。: 変数の同期は、それぞれのメソッドが呼び出されたに行われます。
    可変同期ポイント
    可変同期ポイント
    doStartTag()doInitBody()doAfterBody()doEndTag()doTag()
    鬼ごっこ
    AT_BEGIN、NESTED


    AT_BEGIN、AT_END

    IterationTag
    AT_BEGIN、NESTED

    AT_BEGIN、NESTED
    AT_BEGIN、AT_END

    BodyTag
    AT_BEGIN、NESTED 1
    AT_BEGIN、NESTED 1
    AT_BEGIN、NESTED
    AT_BEGIN、AT_END

    SimpleTag




    AT_BEGIN、AT_END
    1 EVAL_BODY_INCLUDE が返される場合は doStartTag() の後に呼び出され、それ以外の場合は doInitBody() の後に呼び出されます。

    TLD の変数情報

    スクリプト変数情報は、ほとんどの場合、<tag> 要素の <variable> サブ要素を使用してタグライブラリ記述子に直接エンコードすることもできます。JSP 仕様を参照してください。

    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      static intAT_BEGIN
      スクリプト変数が開始タグの後に呼び出しページと同期されるスコープ情報。
      static intAT_END
      スクリプト変数が終了タグの後に呼び出しページと同期するスコープ情報。
      static intNESTED
      スクリプト変数が開始 / 終了タグ内でのみ呼び出しページと同期されるスコープ情報。
    • コンストラクターのサマリー

      コンストラクター  
      コンストラクター 説明
      VariableInfo​(StringSE varName, StringSE className, boolean declare, int scope)
      コンストラクターこれらのオブジェクトは、TagExtraInfo インスタンスによって(変換時に)作成できます。
    • フィールドの詳細

      • NESTED

        public static final int NESTED
        スクリプト変数が開始 / 終了タグ内でのみ呼び出しページと同期されるスコープ情報。
        関連事項:
        定数フィールド値
      • AT_BEGIN

        public static final int AT_BEGIN
        スクリプト変数が開始タグの後に呼び出しページと同期されるスコープ情報。
        関連事項:
        定数フィールド値
      • AT_END

        public static final int AT_END
        スクリプト変数が終了タグの後に呼び出しページと同期するスコープ情報。
        関連事項:
        定数フィールド値
    • コンストラクターの詳細

      • VariableInfo

        public VariableInfo​(StringSE varName,
                            StringSE className,
                            boolean declare,
                            int scope)
        コンストラクターこれらのオブジェクトは、TagExtraInfo インスタンスによって(変換時に)作成できます。
        パラメーター:
        varName - スクリプト変数の名前
        className - この変数の型
        declare - true の場合、新しい変数です (一部の言語では、これには宣言が必要になります)
        scope - 変数の同期スコープの表示
    • メソッドの詳細

      • getVarName

        public StringSE getVarName()
        スクリプト変数の名前を返します。
        戻り値:
        スクリプト変数の名前
      • getClassName

        public StringSE getClassName()
        この変数の型を返します。
        戻り値:
        この変数の型
      • getDeclare

        public boolean getDeclare()
        これが新しい変数であるかどうかを返します。もしそうなら、いくつかの言語では、これは宣言を必要とします。
        戻り値:
        これが新しい変数かどうか。
      • getScope

        public int getScope()
        変数の同期スコープを返します。
        戻り値:
        変数の同期スコープ (AT_BEGIN、AT_END、NESTED のいずれか)。
        関連事項:
        AT_BEGIN, AT_END, NESTED