|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
タグ本体を操作しない簡単なタグハンドラのインタフェースです。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)
このタグハンドラの親 (すぐ上を囲むタグハンドラ) を設定します。 |
| フィールドの詳細 |
public static final int SKIP_BODY
public static final int EVAL_BODY_INCLUDE
public static final int SKIP_PAGE
public static final int EVAL_PAGE
| メソッドの詳細 |
public void setPageContext(PageContext pc)
この値は、doEndTag() によってリセットされません。doStartTag() が次に呼び出されるまでにこの値が変更された場合は、ページ実装オブジェクトが明示的にリセットする必要があります。
pc - このタグハンドラのページコンテキストpublic void setParent(Tag t)
この値は、doEndTag() によってリセットされません。ページ実装オブジェクトが明示的にリセットする必要があります。
t - 親タグまたは NULLpublic Tag getParent()
getParent() メソッドは、実行時に入れ子のタグハンドラ構造をたどって、複数のカスタムアクションを関連付けるために使用します。たとえば、TagSupport の findAncestorWithClass() は、このメソッドを使用します。
現在の仕様では、監視可能なタグハンドラを指定する正式な方法は 1 つしか用意されていません。つまり、タグハンドラ実装クラスを、tag 要素の下にある tag-class 要素に記述する必要があります。ほかに非公式な方法として、タグライブラリの作成者が tag 要素の下にある description 要素に監視可能なタグハンドラを指定する方式があります。このタグハンドラの型は、そのサブタイプまたは void にする必要があります。この設定は、JSP 標準タグライブラリなど、そのタグライブラリを認識する特別なコンテナで利用できます。
TagSupport.findAncestorWithClass().
public int doStartTag()
throws JspException
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 の指定に応じて変数値を再同期します。
JspException. - BodyTag
public int doEndTag()
throws JspException
このメソッドは、doStartTag から制御が戻った後に呼び出されます。アクションの本体が評価されるかどうかは、doStartTag の戻り値に応じて決定されます。
このメソッドが EVAL_PAGE を返した場合は、ページの残りの部分が引き続き評価されます。このメソッドが SKIP_PAGE を返した場合は、ページの残りの部分は評価されず、要求は完了します。この要求が別のページや Servlet から転送された場合、または別のページや Servlet からインクルードされたものである場合は、現在のページの評価だけが行われます。
JSP コンテナは、doEndTag() が呼び出された後に、TagExtraInfo の指定に応じて変数値を再同期します。
JspException. - public void release()
|
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||