VariableInfo クラス  
 
クラス名 :

javax.servlet.jsp.tagext.VariableInfo

 
拡張するクラス :

なし

 
実装するクラス :

なし

 
実装先クラス :

内部コンテナ固有のクラス。ほとんどのコンテナは、このクラスの参照実装 (Apache Jakarta プロジェクトで作成) を使用します。

 
説明

VariableInfo インスタンスは、対応するタグハンドラクラスが作成する各スクリプト変数を示すために TagExtraInfo サブクラスによって作成されます。

 

id 属性によって指定される名前と、className 属性で指定される Java タイプを使用して変数を作成するカスタムアクションの TagExtraInfo サブクラスの例を次に示します。

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)
    };
  }
}

Web コンテナは、変換フェーズ中に getVariableInfo() を呼び出します。VariableInfo オブジェクトの配列を、タグハンドラによって挿入された変数ごとに 1 つ返します。

VariableInfo クラスは、4 つのプロパティを持つ単純なビーンで、コンストラクタにパラメータとして渡される値に初期化されます。これらのプロパティは、varNameclassNamedeclare、および scope です。varName はスクリプト変数の名前、className はそのクラスの名前です。

declare プロパティは boolean であり、true は、アクションによってまったく新しい変数が作成されたことを示します。つまり、変数の宣言は、生成されたサーブレットに追加する必要があります。値 false は、変数が既に別のアクションまたは同じアクションの別の出現によって作成されているので、生成されたコードには既に宣言が含まれていることを意味します。この場合、すべてのコンテナは、変数に新しい値を割り当てる必要があります。

scope プロパティは、これまでに説明した JSP スコープ (ページ、要求、セッション、およびアプリケーション) とは無関係です。その代わり、JSP スクリプト要素で新しい変数が利用可能な場所を定義します。値 AT_BEGIN は、アクションの開始タグからアクションの終了タグの後まで利用できることを意味します。AT_END は、アクションの終了タグの後までは利用できないことを意味します。スコープが NESTED である変数は、開始タグと終了タグの間の、アクションの本文内のみで利用できます。このため、スコープは変数の宣言コードと値の割り当てコードをどこで生成するかを制御し、タグハンドラクラスは、適切なときに JSP スコープの 1 つで変数が利用できるようにします。つまり、AT_BEGIN および NESTED スコープの場合は doStartTag() メソッド、AT_END スコープの場合は doEndTag() メソッドです。本文で繰り返す BodyTag の場合、値は doAfterBody() メソッドで更新し、繰り返しごとに新しい値を提供できます。

 
VariableInfo()  
public VariableInfo(String varName, String className,
  boolean declare, int scope)

指定された値で新しいインスタンスを作成します。

getClassName()  
public String getClassName()

スクリプト変数の Java タイプを返します。

getDeclare()  
public boolean getDeclare()

Web コンテナがスクリプト変数の宣言ステートメントを作成する場合は true を返します。それ以外の場合は false を返します。これが使用されるのは、変数が別のタグハンドラによって既に宣言されていて、この VariableInfo インスタンスを作成する TagExtraInfo サブクラスに対応するタグハンドラによってのみ更新される場合です。

getScope()  
public int getScope()

AT_BEGIN (開始タグから JSP ページの終了までスクリプト変数を利用できるようにする)、AT_END (終了タグから JSP ページの終了まで変数を利用できるようにする)、または NESTED (開始タグと終了タグの間のみで変数を利用できるようにする) のいずれか 1 つを返します。

getVarName()  
public String getVarName()

変数名を返します。