カスタムタグの内容の表示の繰り返し
カスタムタグの内容の表示の繰り返しは,doAfterBodyの実装によってハンドリングする.
本頁では以下のサンプルJSPで,タグの内容を表示の繰り返しを指定する.
カスタムタグ
属性bodyIsVisibleについては前頁のサンプルと同じである.すなわち"true"ならタグの内容を表示,"false"なら表示しない.デフォルトは"true"である.今回のサンプルのタグハンドラにはタグの表示繰り返し回数を保持する属性repeatTimeのsetterもある.
<sample:repeat-body>は任意属性bodyIsVisibleとrepeatTimeを持つ.前者は前頁と同じである.後者はタグの内容部分の表示繰り返し回数nである.nは繰り返し回数なので,タグの内容はn+1回表示される.このカスタムタグのタグハンドラを以下に示す.
doStartTagメソッドで
注意点は最後のカスタムタグの出力である.doAfterBodyによる出力がない.doAfterBodyはタグの内容の評価後に呼び出される.すなわちdoStartTagからTag.SKIP_BODYが返ってタグの評価がなされなかった場合,doAfterBodyも呼ばれずdoEndTagが呼ばれる.
Tag.EVAL_BODY_INCLUDEが返った場合,タグの内容が評価される.サンプルでは単に出力されるだけである.タグの内容が評価された後,JSPコンテナはIterationTagで定義されたメソッド
public int doAfterBody() throws JspExceptionを呼ぶ.JSPコンテナはこのメソッドの返り値をみて,もう一度タグの内容の評価を行うかdoEndTagメソッド呼び出しを行うかを決定する.
- IterationTag.EVAL_BODY_AGAIN
- タグの内容を再評価する.
- Tag.SKIP_BODY
- タグの内容の評価を終了し,doEndTagメソッド呼び出しを行う.
念のために今回のサンプルのtldファイルを以下に示す.
今までのサンプルと同じtaglibに追加した.最後の要素tagが今回のサンプル用のものである.

