|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
ボディの操作をしない簡単なタグハンドラのインターフェースです。 TagインターフェースはタグハンドラとJSPページ実装クラスとの間に基本的なプロトコルを定義します。 Tagインターフェースはライフサイクル、つまりタグの開始時と終了時に呼ばれるメソッドを定義します。
プロパティ
Tagインターフェースは、コアpageContextと親プロパティの設定と取得メソッドを定義しています。
JSPページ実装オブジェクトは、doStartTag()またはdoEndTag()の呼び出しより前に、setPageContextとsetParentを呼び出します。
メソッド
doStartTagとdoEndTagの2つのメインアクションがあります: 全ての特有なプロパティは一度だけ初期化され、doStartTagとdoEndTagメソッドはタグハンドラ上で呼び出されます。 これらの呼び出しの間で、タグハンドラは保護されなければならない状態を保持すると仮定されます。doEndTagの呼び出しの後、タグハンドラは以降の呼び出しで利用可能になります。(プロパティは保持されていると予想されます)
ライフサイクル ライフサイクルの詳細は、以下の状態遷移図とコメントで述べられます。
一度、タグハンドラからの全ての呼び出しが完成すると、releaseメソッドはその上で呼び出されます。 一度、releaseメソッドが呼び出されると、親と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()
状態を開放するために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()メソッドは、このやり方の便利な方法を提供します。
仕様の現バージョンでは、タグハンドラの観測タイプを指示するたった一つの正式な方法しか提供していません: タグエレメントのタグクラス、サブエレメント内で述べられているタグハンドラ実装クラス。 これは、記述サブエレメント観測タイプで指示するタグライブラリー著者の許可によって非公式マナーとして展開されています。 タイプはタグハンドラ実装クラスまたはvoidのサブタイプであるべきです。 これに追加される制限は、独自タグライブラリーを認識している特別なコンテナによって開発可能です。
TagSupport.findAncestorWithClass(javax.servlet.jsp.tagext.Tag, java.lang.Class)
public int doStartTag() throws JspException
doStartTagメソッドは、pageContextと親のプロパティが設定されていることを仮定します。 それはまた、属性として公開されたプロパティも設定されていると仮定します。 このメソッドが起動された時、ボディはまだ評価されていません。
このメソッドは、アクションのボディは評価されるべき、または他でSKIP_BODYを指定することと、指定するTag.EVAL_BODY_INCLUDEまたはBodyTag.EVAL_BODY_BUFFEREDを返します。
TagがEVAL_BODY_INCLUDEを返すとき、(もしあるなら)ボディの評価結果は現在の"出力"JspWriterに含まれます。 そして、doEndTag()が起動されます。
タグハンドラがBodyTagを実装している場合、BodyTag.EVAL_BODY_BUFFEREDは、単に有効です。
JSPコンテナは、doStartTag()の起動後、TagExtraInfo内で指示される変数と再同期します。
JspException.
JspException
BodyTag
public int doEndTag() throws JspException
このメソッドは、doStartTagから実行された後に呼ばれます。 アクションのボディは評価されているかもしれないし、されているかもしれません。 それはdoStartTagの戻り値に依存します。
このメソッドがEVAL_PAGEを返した場合、ページの残り部分は評価され続けます。 このメソッドがSKIP_PAGEを返した場合、ページの残り部分は評価されず、リクエストは完了します。 このリクエストが転送された、または、他のページ(またはServlet)からインクルードされた場合、現ページ評価は完了します。
JSPコンテナは、doEndTag()起動後、TagExtraInfo内で指示する変数を再同期します。
JspException.
JspException
public void release()
|
|||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。
Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.