他のカスタムタグを使用するカスタムタグを作成しようとしています。
私のアプローチはそうだった:
public int doAfterBody() throws JspTagException {
BodyContent bc = getBodyContent();
if (bc!=null) {
String body = bc.getString().toUpperCase();
try {
bc.clearBody();
bc.getEnclosingWriter().write("<some-other-custom-tag>");
} catch (IOException e) {
e.printStackTrace();
}
}
return SKIP_BODY;
}
BodyContentを使用して記述したものは処理されなくなったため、これは機能していないようです。そのため、JSPからの出力にはまだが含まれています<some-other-custom-tag>
。ブラウザに出力される前に出力を処理する方法はありますか?
編集:私はおそらく私の質問をうまく表現していませんでした。(私は思う)コンパイルがどのように機能し、リクエストがどのようにドキュメントに変わるかを知っています。
私が理解しているように、コンパイラは私のJSPを調べて、を見つけ<custom-tag>
ます。参照されているTLDを調べて、タグに関連付けられているJavaクラスを見つけます。クラスを呼び出し、パラメータなどを設定してから、次のようなメソッドを実行しますdoAfterBody()
(クラスが拡張するタグハンドラのタイプによって異なります)。そこ<some-other-custom-tag>
から、JSPの出力に書き込みます。これが機能しないことを理解しています。これは、コンパイラが再度それを調べないため、処理する別のカスタムタグがあることに気付かないためです。
(1)コンパイラに出力(の一部)をもう一度処理させるか、(2)コンパイラにStringオブジェクトを処理<some-other-custom-tag>
させて出力に書き込むことができるようにする方法を探しています。
もちろん、私は他の解決策も受け入れています。