|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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 |
フィールドの詳細 |
public static final int EVAL_BODY_AGAIN
メソッドの詳細 |
public int doAfterBody() throws JspException
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.