インターフェース IterationTag

  • すべてのスーパーインターフェース:
    JspTagTag
    すべての既知のサブインターフェース:
    BodyTag
    すべての既知の実装クラス:
    BodyTagSupportConditionalTagSupportLoopTagSupportTagSupport

    public interface IterationTag
    extends Tag
    IterationTag インターフェースは、その本体の再評価を制御する 1 つの追加メソッドを定義することにより、Tag を継承します。

    IterationTag を実装するタグハンドラーは、doStartTag() および doEndTag() メソッドに関してタグを実装するものとして扱われます。IterationTag は新しいメソッド doAfterBody() を提供します。

    doAfterBody() メソッドは、すべてのボディ評価の後に呼び出され、ボディが再評価されるかどうかを制御します。doAfterBody() が IterationTag.EVAL_BODY_AGAIN を返す場合、本体が再評価されます。doAfterBody() が Tag.SKIP_BODY を返す場合、本体はスキップされ、代わりに doEndTag() が評価されます。

    プロパティタグのプロパティ以外に新しいプロパティはありません。

    メソッド新しいメソッドが 1 つあります。doAfterBody() です。

    ライフサイクル

    ライフサイクルの詳細は、以下の遷移図で説明されています。doStartTag()、BODY、doAfterBody() の計算中にスローされた例外は、実行シーケンスを中断し、タグハンドラーが TryCatchFinally インターフェースを実装していない限り、スタックに伝達されます。詳細については、そのインターフェースを参照してください。

    Lifecycle Details Transition Diagram for IterationTag

    空の空でないアクション

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

    doStartTag() の後にどのメソッドが呼び出されるかは、TLD での宣言方法ではなく、戻り値と、カスタムアクション要素が空であるか JSP ページにないかによって異なります。

    SKIP_BODY が返された場合、本体は評価されず、doEndTag() が呼び出されます。

    EVAL_BODY_INCLUDE が返され、カスタムアクション要素が空でない場合、ボディが評価されて現在の出力に「渡され」、doAfterBody() が呼び出され、ゼロ回以上の反復の後に doEndTag() が呼び出されます。

    • フィールドの詳細

      • EVAL_BODY_AGAIN

        static final int EVAL_BODY_AGAIN
        ボディの再評価をリクエストします。doAfterBody から返されます。JSP 1.1 との互換性のため、この値は、現在非推奨となっている BodyTag.EVAL_BODY_TAG と同じになるように慎重に選択されています。
        関連事項:
        定数フィールド値
    • メソッドの詳細

      • doAfterBody

        int doAfterBody()
                 throws JspException
        プロセス本体(再)評価。このメソッドは、本体が BodyEvaluation オブジェクトに評価されるたびに、JSP ページ実装オブジェクトによって呼び出されます。ボディ評価がない場合、メソッドは呼び出されません。

        doAfterBody が EVAL_BODY_AGAIN を返す場合、ボディの新しい評価が行われます (その後、doAfterBody がもう一度呼び出されます)。doAfterBody が SKIP_BODY を返す場合、ボディの評価はそれ以上行われず、doEndTag メソッドが呼び出されます。

        このタグハンドラーが BodyTag を実装し、doAfterBody が SKIP_BODY を返す場合、doEndTag を呼び出す前に、pageContext の popBody メソッドを使用して out の値が復元されます。

        共有状態にいくつかの変更があったか、外部計算が原因で、メソッドの再呼び出しが異なるアクションにつながる可能性があります。

        JSP コンテナーは、doAfterBody() の呼び出し後に、AT_BEGIN および NESTED 変数(関連する TagExtraInfo または TLD によって定義される)の値を再同期します。

        戻り値:
        身体の追加評価が必要かどうか
        例外:
        JspException - このタグの処理中にエラーが発生した場合