Я пытаюсь создать собственный тег, который использует другие пользовательские теги.
Мой подход был таким:
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>
, чтобы я мог записать это в вывод.
Я также открыт для любого альтернативного решения, конечно.