インターフェース Tag
- すべてのスーパーインターフェース:
JspTag
- すべての既知のサブインターフェース:
BodyTag
、IterationTag
、LoopTag
public interface Tag extends JspTag
本体を操作したくないクラシックタグハンドラーのインターフェース。Tag インターフェースは、Tag ハンドラーと JSP ページ実装クラス間の基本的なプロトコルを定義します。開始タグと終了タグで呼び出されるライフサイクルとメソッドを定義します。プロパティ
Tag インターフェースは、コア pageContext および親プロパティの setter および getter メソッドを指定します。
JSP ページ実装オブジェクトは、doStartTag() または doEndTag() を呼び出す前に、setPageContext と setParent をこの順序で呼び出します。
メソッド
主なアクションは、doStartTag と doEndTag の 2 つです。適切なプロパティがすべて初期化されると、タグハンドラーで doStartTag メソッドと doEndTag メソッドを呼び出すことができます。これらの呼び出しの間、タグハンドラーは保持する必要がある状態を保持しているものと想定されます。doEndTag 呼び出しの後、タグハンドラーはさらに呼び出しを行うことができます (また、そのプロパティが保持されていると想定されます)。
ライフサイクル
ライフサイクルの詳細は、以下の遷移図と以下のコメントで説明されています。
- [1] この移行は、長期データをリリースするためのものです。プロパティが保持されているかどうかの保証はありません。
- [2] この遷移は、例外が発生せずにタグが正常に終了した場合にのみ発生します
- [3] 一部の setter は、タグハンドラーが再利用される前に再度呼び出される場合があります。たとえば、
setParent()
は同じページ内で再利用されているがレベルが異なる場合に呼び出され、setPageContext()
は別のページで使用されている場合に呼び出され、値 setter は値が異なるかリクエスト時の属性値として表現されている場合に呼び出されます。 - 例外処理とリソース管理に関連する詳細については、TryCatchFinally インターフェースを確認してください。
タグハンドラーのすべての呼び出しが完了すると、リリースメソッドが呼び出されます。リリースメソッドが呼び出されると、親や pageContext を含むすべてのプロパティが未指定の値にリセットされたとみなされます。ページコンパイラーは、ハンドラーが GC にリリースされる前に、タグハンドラーで release() が呼び出されることを保証します。
空の空でないアクション
TagLibraryDescriptor ファイルで、アクションによって常に空のアクションが必要であることが示されている場合、<body-content> 「空」のエントリの場合、doStartTag() メソッドは SKIP_BODY を返す必要があります。
それ以外の場合、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()
状態を解放するためにタグハンドラーで呼び出されます。void
setPageContext(PageContext pc)
現在のページコンテキストを設定します。void
setParent(Tag t)
このタグハンドラーの親(最も近い囲みタグハンドラー)を設定します。
フィールドの詳細
SKIP_BODY
static final int SKIP_BODY
本体の評価をスキップします。doStartTag および doAfterBody の有効な戻り値です。- 関連事項:
- 定数フィールド値
EVAL_BODY_INCLUDE
static final int EVAL_BODY_INCLUDE
既存の出力ストリームに本体を評価します。doStartTag の有効な戻り値です。- 関連事項:
- 定数フィールド値
SKIP_PAGE
static final int SKIP_PAGE
ページの残りをスキップします。doEndTag の有効な戻り値です。- 関連事項:
- 定数フィールド値
EVAL_PAGE
static final int EVAL_PAGE
ページの評価を続けます。doEndTag() の有効な戻り値。- 関連事項:
- 定数フィールド値
メソッドの詳細
setPageContext
void setPageContext(PageContext pc)
現在のページコンテキストを設定します。このメソッドは、doStartTag() より前の JSP ページ実装オブジェクトによって呼び出されます。この値は doEndTag() によってリセットされない * ため *、doStartTag() の呼び出し間で変更される場合は、ページ実装によって明示的にリセットする必要があります。
- パラメーター:
pc
- このタグハンドラーのページコンテキスト。
setParent
void setParent(Tag t)
このタグハンドラーの親(最も近い囲みタグハンドラー)を設定します。doStartTag() より前の JSP ページ実装オブジェクトによって呼び出されます。この値は doEndTag() によってリセットされず、ページ実装によって明示的にリセットする必要があります。
- パラメーター:
t
- 親タグ、または null。
getParent
Tag getParent()
このタグハンドラーの親(最も近い外側のタグハンドラー)を取得します。getParent() メソッドは、カスタムアクション間の連携のために、実行時にネストされたタグハンドラー構造をナビゲートするために使用できます。たとえば、TagSupport の findAncestorWithClass() メソッドは、これを行う便利な方法を提供します。
仕様の現在のバージョンは、タグハンドラーの監視可能な型を示す 1 つの正式な方法のみを提供しています。タグハンドラーの実装クラスは、タグ要素の tag-class サブ要素で説明されます。これは、タグライブラリの作成者が記述サブ要素でオブザーバブル型を指定できるようにすることにより、非公式な方法で拡張されます。型は、タグハンドラー実装クラスのサブ型または void である必要があります。この追加の制約は、JSP 標準タグライブラリの場合のように、その特定のタグライブラリについて知っている特殊なコンテナーによって悪用される可能性があります。
- 戻り値:
- 現在の親。ない場合は null
- 関連事項:
TagSupport.findAncestorWithClass(jakarta.servlet.jsp.tagext.Tag, java.lang.Class<?>)
doStartTag
int doStartTag() throws JspException
このインスタンスの開始タグを処理します。このメソッドは、JSP ページ実装オブジェクトによって呼び出されます。doStartTag メソッドは、プロパティ pageContext と親が設定されていることを前提としています。また、属性として公開されているプロパティも設定されていることを前提としています。このメソッドが呼び出されたとき、本体はまだ評価されていません。
このメソッドは、Tag.EVAL_BODY_INCLUDE または BodyTag.EVAL_BODY_BUFFERED を返し、アクションの本体を評価する必要があることを示すか、SKIP_BODY を返します。
タグが EVAL_BODY_INCLUDE を返すと、ボディの評価結果(存在する場合)が現在の「アウト」JspWriter に含まれ、その結果 doEndTag() が呼び出されます。
BodyTag.EVAL_BODY_BUFFERED は、タグハンドラーが BodyTag を実装している場合にのみ有効です。
JSP コンテナーは、doStartTag() メソッドが BodyTag.EVAL_BODY_BUFFERED を返す BodyTag を実装するタグハンドラーを除いて、doStartTag() の呼び出し後に AT_BEGIN および NESTED 変数(関連する TagExtraInfo または TLD によって定義される)の値を再同期します。
- 戻り値:
- タグが本文を処理する場合は EVAL_BODY_INCLUDE、処理しない場合は SKIP_BODY。
- 例外:
JspException
- このタグの処理中にエラーが発生した場合- 関連事項:
BodyTag
doEndTag
int doEndTag() throws JspException
このインスタンスの終了タグを処理します。このメソッドは、すべてのタグハンドラーの JSP ページ実装オブジェクトによって呼び出されます。このメソッドは、doStartTag から戻った後に呼び出されます。アクションの本体は、doStartTag の戻り値に応じて評価される場合と評価されない場合があります。
このメソッドが EVAL_PAGE を返す場合、ページの残りの部分は引き続き評価されます。このメソッドが SKIP_PAGE を返す場合、ページの残りの部分は評価されず、リクエストは完了し、タグを囲む doEndTag() メソッドは呼び出されません。このリクエストが転送されたか、別のページ(またはサーブレット)から含まれていた場合、現在のページの評価のみが停止されます。
JSP コンテナーは、doEndTag() の呼び出し後に、AT_BEGIN および AT_END 変数(関連する TagExtraInfo または TLD によって定義される)の値を再同期します。
- 戻り値:
- JSP ページの評価を続行するかどうかの指示。
- 例外:
JspException
- このタグの処理中にエラーが発生した場合
release
void release()
状態を解放するためにタグハンドラーで呼び出されます。ページコンパイラーは、JSP ページ実装オブジェクトがすべてのタグハンドラーでこのメソッドを呼び出すことを保証しますが、その間に doStartTag と doEndTag で複数の呼び出しが行われる場合があります。