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 を参照してください。