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

すべてのスーパーインタフェース:
Tag
既知のサブインタフェースの一覧:
BodyTag
既知の実装クラスの一覧:
BodyTagSupport, TagSupport

public interface IterationTag
extends Tag

IterationTag インターフェイスは、ボディ部の再評価をコントロールする1つの追加メソッドを定義して、Tagクラスを拡張したものです。

IterationTagを実装したタグハンドラはdoStartTag()とdoEndTag()メソッドに関しては、Tagを実装したものと同じように扱われます。 ItetarionTagは新メソッドdoAfterBody()を提供します。

doAfterBody()メソッドは、ボディ部の評価が終わるごとにボディ部が再評価されるかどうかをコントロールするために呼ばれます。 もしdoAfterBody()がIterationTag.EVAL_BODY_AGAINを返したら、ボディ部は再評価されます。 もしdoAfterBody()がTag.SKIP_BODYを返したら、ボディ部はスキップされ、 doEndTag()がかわりに評価されます。

プロパティ このタグには新規にプロパティは追加されていません。

メソッド 新メソッドdoAfterBody()が定義されています。

ライフサイクル

ライフサイクルの詳細は以下の状態遷移図のとおりです。 doStartTag()、BODY、doAfterBody()の処理中に投げられた例外は、実行シーケンスを中断しスタックをさかのぼって伝達されますが、タグハンドラが TryCatchFinallyインターフェイスを実装している場合は異なります。詳しくはそのインターフェイスの説明を見てください。

なにも動作させない場合とそうでない場合

もし、 TagLibraryDescriptor ファイルが<body-content>エントリが空で、常に何もしないように記述されている場合、doStartTag() はSKIP_BODYを返さなければいけません。 また、 doStartTag() メソッドはSKIP_BODYとEVAL_BODY_INCLUDEを返すことができます。

もし、SKIP_BODYが返された場合、ボディ部は評価されずに、doEndTag()が呼ばれます。

もし、EVAL_BODY_INCLUDEが返された場合、ボディ部は評価され、現在の出力に素通しされます。そして、doAfterBody()が評価され、0回以上の繰り返しの後にdoEndTag()が評価されます。


フィールドの概要
static int EVAL_BODY_AGAIN
          ボディ部を再評価するよう要求します。
 
インタフェース javax.servlet.jsp.tagext.Tag から継承したフィールド
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
 
メソッドの概要
 int doAfterBody()
          ボディ部の(再)評価をします。
 
インタフェース javax.servlet.jsp.tagext.Tag から継承したメソッド
doEndTag, doStartTag, getParent, release, setPageContext, setParent
 

フィールドの詳細

EVAL_BODY_AGAIN

public static final int EVAL_BODY_AGAIN
ボディ部を再評価するよう要求します。 doAfterBodyから返されます。 JSP 1.1との互換のため、この値は現在無効になった BodyTag.EVAL_BODY_TAG と同じになるように注意して選択されています。

関連項目:
定数フィールド値
メソッドの詳細

doAfterBody

public int doAfterBody()
                throws JspException
ボディ部の(再)評価をします。 このメソッドはJSPページを実装したオブジェクトから、ボディ部が BodyEvalutionオブジェクトに評価された後ごとに呼ばれます。 このメソッドはボディ部の評価がなければ呼び出されません。

doAfterBodyがEVAL_BODY_AGAINを返した場合、新たにボディ部の評価が行われます。(他のdoAfterBodyの呼び出しに準じます。) doAfterBodyがSKIP_BODYを返した場合、ボディ部の評価はされません。 outの値はpageContextのpopBodyメソッドにより復旧され、doEndTagが呼び出されます。

メソッドの再呼び出しは違った動作を引き出します。 共有された状態が変わったり、外部処理が関係するためです。

JSPコンテナは doAfterBody()の呼び出しの後に TagExtraInfoの中で指示されている全ての変数の値を再同期化します。

戻り値:
ボディ部の再評価が必要かどうか
例外:
JspException


このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。

Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.