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