カスタム タグ ハンドラの移行

JRun 3.1 では、タグ ハンドラをキャッシュすることによってカスタム タグのパフォーマンスが向上しました。ただし、このことはインスタンス変数が自動的に初期ステートにリセットされないことを意味します(JRun 3.0 ではカスタム タグはキャッシュされなかったので、JRun がカスタム タグを読み込むたびにインスタンス変数は自動的にリセットされていました)。

タグ ハンドラでインスタンスレベルの変数を保持するか、またはその他のステート管理を行う場合は、タグ インスタンスがキャッシュされる前に release メソッドを実装して変数をリセットする必要があります。たとえば、タグ ハンドラによって counter という名前の変数を保持する場合は、次の例のように release メソッド内で再初期化する必要があります。

...
public class MyHandler extends TagSupport {
  private int counter = 0;
...
public int doAfterBody() throws JspException {
  // 反復の記録
  counter++;
  ...
  }
  public void release() {
    counter = 0;
  }
...

詳細については、javax.servlet.jsp.tagext.Tag
javax.servlet.jsp.tagext.TagSupport、および
javax.servlet.jsp.tagext.TagSupport に関する JavaDocs を参照してください。