Пользовательский тег JSP - Как я получаю тело тега?

У меня есть пользовательский тег jsp как это:

<a:customtag>
    The body of the custom tag...
    More lines of the body...
</a:customtag>

В пользовательском теге, как я могу получить текст того, каково тело?

9
задан Kyle 23 March 2010 в 17:45
поделиться

2 ответа

Это сложно, потому что есть два механизма.

Если вы расширяете SimpleTagSupport, вы получаете метод getJspBody () . Он возвращает JspFragment, который можно вызвать (Writer writer) , чтобы записать содержимое тела в писатель.

Вам следует использовать SimpleTagSupport, если у вас нет особой причины использовать BodyTagSupport (например, поддержку устаревших тегов), поскольку это - ну - проще.

Если вы используете классические теги, вы расширяете BodyTagSupport и таким образом получаете доступ к методу getBodyContent () . Это дает вам объект BodyContent, из которого вы можете получить содержимое тела.

12
ответ дан 4 December 2019 в 08:32
поделиться

Чтобы расширить ответ Brabster'а, я использовал SimpleTagSupport.getJspBody() для записи JspFragment во внутренний StringWriter для проверки и манипуляций:

public class CustomTag extends SimpleTagSupport {
    @Override public void doTag() throws JspException, IOException {
        final JspWriter jspWriter = getJspContext().getOut();
        final StringWriter stringWriter = new StringWriter();
        final StringBuffer bodyContent = new StringBuffer();

        // Execute the tag's body into an internal writer
        getJspBody().invoke(stringWriter);

        // (Do stuff with stringWriter..)

        bodyContent.append("<div class='custom-div'>");
        bodyContent.append(stringWriter.getBuffer());
        bodyContent.append("</div>");

        // Output to the JSP writer
        jspWriter.write(bodyContent.toString());
    }
}

}

5
ответ дан 4 December 2019 в 08:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: