インターフェース Tag

  • すべてのスーパーインターフェース:
    JspTag
    すべての既知のサブインターフェース:
    BodyTagIterationTagLoopTag
    すべての既知の実装クラス:
    BodyTagSupportConditionalTagSupportLoopTagSupportTagAdapterTagSupport

    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 インターフェースを確認してください。
    Lifecycle Details Transition Diagram for Tag

    タグハンドラーのすべての呼び出しが完了すると、リリースメソッドが呼び出されます。リリースメソッドが呼び出されると、親や pageContext を含むすべてのプロパティが未指定の値にリセットされたとみなされます。ページコンパイラーは、ハンドラーが GC にリリースされる前に、タグハンドラーで release() が呼び出されることを保証します。

    空の空でないアクション

    TagLibraryDescriptor ファイルで、アクションによって常に空のアクションが必要であることが示されている場合、<body-content> 「空」のエントリの場合、doStartTag() メソッドは SKIP_BODY を返す必要があります。

    それ以外の場合、doStartTag() メソッドは SKIP_BODY または EVAL_BODY_INCLUDE を返す場合があります。

    SKIP_BODY が返された場合、ボディが存在しても評価されません。

    EVAL_BODY_INCLUDE が返される場合、本体が評価され、現在の出力に「渡されます」。

    • フィールドサマリー

      フィールド  
      修飾子と型 フィールド 説明
      static intEVAL_BODY_INCLUDE
      ボディを既存のアウトストリームに評価します。
      static intEVAL_PAGE
      ページの評価を続けます。
      static intSKIP_BODY
      ボディ評価をスキップします。
      static intSKIP_PAGE
      ページの残りをスキップします。
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      intdoEndTag()
      このインスタンスの終了タグを処理します。
      intdoStartTag()
      このインスタンスの開始タグを処理します。
      TaggetParent()
      このタグハンドラーの親(最も近い外側のタグハンドラー)を取得します。
      voidrelease()
      状態を解放するためにタグハンドラーで呼び出されます。
      voidsetPageContext​(PageContext pc)
      現在のページコンテキストを設定します。
      voidsetParent​(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 で複数の呼び出しが行われる場合があります。