javax.servlet.jsp.tagext
インタフェース Tag

既知のサブインタフェースの一覧:
BodyTag, IterationTag

public interface Tag

タグ本体を操作しない簡単なタグハンドラのインタフェースです。Tag インタフェースには、タグハンドラと JSP ページ実装クラスとの間の基本的なプロトコルが定義されています。また、そのライフサイクルと、開始タグと終了タグで呼び出されるメソッドを定義します。

プロパティ

Tag インタフェースは、コア pageContext と親のプロパティに対する設定メソッドおよび取得メソッドを定義しています。

JSP ページ実装オブジェクトは、doStartTag() または doEndTag() を呼び出す前に、setPageContext と setParent をこの順序で呼び出します。

メソッド

doStartTag および doEndTag という 2 つのアクションが用意されています。対応するプロパティがすべて初期化されると、タグハンドラ上で doStartTag および doEndTag メソッドが呼び出されます。タグハンドラは、doStartTag メソッドが呼び出されてから doEndTag メソッドが呼び出されるまで、保存が必要な内部状態を保持します。doEndTag が呼び出されると、このタグハンドラは次の呼び出しに利用されます。このとき、タグハンドラのプロパティは保持されます。

ライフサイクル

ライフサイクルの詳細は、次の遷移図に説明されています。次のコメントを参照してください。

タグハンドラ上ですべての呼び出しが完了すると、解放メソッドが呼び出されます。解放メソッドが呼び出されると、親および pageContext を含むすべてのプロパティが未指定値にリセットされます。ページコンパイラは、release() をタグハンドラ上で呼び出してから、タグハンドラを GC に解放します。

空のアクションと空でないアクション

TagLibraryDescriptor ファイルの <body-content> エントリが "empty" である場合、そのアクションは常に空であることを示しています。この場合、doStartTag() メソッドは SKIP_BODY を返す必要があります。エントリが "empty" でない場合、doStartTag() メソッドは SKIP_BODY または EVAL_BODY_INCLUDE を返します。

SKIP_BODY が返された場合は、タグ本体 (存在する場合) は評価されません。

EVAL_BODY_INCLUDE が返された場合は、タグ本体が評価され、現在の出力に渡されます。


フィールドの概要
static int EVAL_BODY_INCLUDE
          タグ本体を評価し、既存の出力ストリームに出力します。
static int EVAL_PAGE
          ページの評価を続行します。
static int SKIP_BODY
          タグ本体の評価をスキップします。
static int SKIP_PAGE
          ページの残り部分をスキップします。
 
メソッドの概要
 int doEndTag()
          このインスタンスの終了タグを処理します。
 int doStartTag()
          このインスタンスの開始タグを処理します。
 Tag getParent()
          このタグハンドラの親 (すぐ上を囲むタグハンドラ) を取得します。
 void release()
          状態を解放するために Tag ハンドラ上で呼び出されます。
 void setPageContext(PageContext pc)
          現在のページコンテキストを設定します。
 void setParent(Tag t)
          このタグハンドラの親 (すぐ上を囲むタグハンドラ) を設定します。
 

フィールドの詳細

SKIP_BODY

public static final int SKIP_BODY
タグ本体の評価をスキップします。doStartTag および doAfterBody の有効な戻り値です。

EVAL_BODY_INCLUDE

public static final int EVAL_BODY_INCLUDE
タグ本体を評価し、既存の出力ストリームに出力します。doStartTag の有効な戻り値です。

SKIP_PAGE

public static final int SKIP_PAGE
ページの残り部分をスキップします。doEndTag の有効な戻り値です。

EVAL_PAGE

public static final int EVAL_PAGE
ページの評価を続行します。doEndTag() の有効な戻り値です。
メソッドの詳細

setPageContext

public void setPageContext(PageContext pc)
現在のページコンテキストを設定します。このメソッドは、doStartTag() の前に、JSP ページ実装オブジェクトから呼び出されます。

この値は、doEndTag() によってリセットされません。doStartTag() が次に呼び出されるまでにこの値が変更された場合は、ページ実装オブジェクトが明示的にリセットする必要があります。

パラメータ:
pc - このタグハンドラのページコンテキスト

setParent

public void setParent(Tag t)
このタグハンドラの親 (すぐ上を囲むタグハンドラ) を設定します。このメソッドは、doStartTag() の前に JSP ページ実装オブジェクトから呼び出されます。

この値は、doEndTag() によってリセットされません。ページ実装オブジェクトが明示的にリセットする必要があります。

パラメータ:
t - 親タグまたは NULL

getParent

public Tag getParent()
このタグハンドラの親 (すぐ上を囲むタグハンドラ) を取得します。

getParent() メソッドは、実行時に入れ子のタグハンドラ構造をたどって、複数のカスタムアクションを関連付けるために使用します。たとえば、TagSupport の findAncestorWithClass() は、このメソッドを使用します。

現在の仕様では、監視可能なタグハンドラを指定する正式な方法は 1 つしか用意されていません。つまり、タグハンドラ実装クラスを、tag 要素の下にある tag-class 要素に記述する必要があります。ほかに非公式な方法として、タグライブラリの作成者が tag 要素の下にある description 要素に監視可能なタグハンドラを指定する方式があります。このタグハンドラの型は、そのサブタイプまたは void にする必要があります。この設定は、JSP 標準タグライブラリなど、そのタグライブラリを認識する特別なコンテナで利用できます。

戻り値:
現在の親、または存在しない場合は null
関連項目:
TagSupport.findAncestorWithClass().

doStartTag

public int doStartTag()
               throws JspException
このインスタンスの開始タグを処理します。このメソッドは、JSP ページ実装オブジェクトによって呼び出されます。

doStartTag メソッドは、pageContext と親のプロパティが設定されていることを前提とします。また、属性として公開されたプロパティが設定されていることも前提とします。このメソッドが呼び出されたときには、本体はまだ評価されていません。

このメソッドは、アクションの本体を評価する必要がある場合は Tag.EVAL_BODY_INCLUDE または BodyTag.EVAL_BODY_BUFFERED を返し、評価する必要がない場合は SKIP_BODY を返します。

Tag が EVAL_BODY_INCLUDE を返した場合は、タグ本体 (存在する場合) を評価した結果が現在の出力用 JspWriter に出力され、doEndTag() が呼び出されます。

BodyTag.EVAL_BODY_BUFFERED は、タグハンドラが BodyTag を実装している場合のみ有効です。

JSP コンテナは、doStartTag() が呼び出された後に、TagExtraInfo の指定に応じて変数値を再同期します。

戻り値:
本体を処理する必要がある場合は EVAL_BODY_INCLUDE、処理する必要がない場合は SKIP_BODY
例外:
JspException. -  
関連項目:
BodyTag

doEndTag

public int doEndTag()
             throws JspException
このインスタンスの終了タグを処理します。このメソッドは、すべての Tag ハンドラに対して JSP ページ実装オブジェクトから呼び出されます。

このメソッドは、doStartTag から制御が戻った後に呼び出されます。アクションの本体が評価されるかどうかは、doStartTag の戻り値に応じて決定されます。

このメソッドが EVAL_PAGE を返した場合は、ページの残りの部分が引き続き評価されます。このメソッドが SKIP_PAGE を返した場合は、ページの残りの部分は評価されず、要求は完了します。この要求が別のページや Servlet から転送された場合、または別のページや Servlet からインクルードされたものである場合は、現在のページの評価だけが行われます。

JSP コンテナは、doEndTag() が呼び出された後に、TagExtraInfo の指定に応じて変数値を再同期します。

戻り値:
JSP ページの評価を続けるかどうか
例外:
JspException. -  

release

public void release()
状態を解放するために Tag ハンドラ上で呼び出されます。ページコンパイラは、JSP ページ実装オブジェクトがすべてのタグハンドラ上でこのメソッドを呼び出すことを保証します。このメソッドは、doStartTag と doEndTag の間に、複数回呼び出される可能性があります。


Copyright 2002 Sun Microsystems, Inc. All rights reserved.
使用には使用許諾契約が適用されます。