Как перевести сгенерированные пользовательские теги в jsp

Я пытаюсь создать древовидную структуру в Java для отображения в HTML. Я могу заставить его работать, создав чистый html на Java, но я бы предпочел сохранить html для компонентов дерева (корень, ветвь, лист) в тегах, а не для удобства обслуживания. Есть ли хороший способ перевести строку java, содержащую настраиваемый тег (или любой другой тег в этом отношении) в html?

Я пробовал несколько вещей:

-создать строку в контроллере, а затем распечатать ее в jsp (через скриптлет или EL). Строка не переводится, а печатается как есть, т.е. отображается в браузере.

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

-использовать основные теги Структура слишком сложна, поэтому это не вариант

-скриплеты плохо работают с тегами

Любые идеи?


person philfo    schedule 28.01.2013    source источник


Ответы (1)


Если я правильно понимаю, ваш тег генерирует HTML-код, содержащий другой экземпляр настраиваемого тега. Фактически, он генерирует не HTML, а код JSP. Это не разрешено. Контейнер JSP не будет повторно анализировать и интерпретировать код, созданный вашим тегом.

Но нет причин, по которым вы не можете самостоятельно вызывать свои методы тегов (или тег JSP, если они реализованы как файл тегов) для реализации рекурсии. Вот простой пример с использованием файла тегов JSP (tree.tag, принимая набор узлов в качестве параметра):

<%@ tag %>
<%@ attribute name="nodes" required="true" rtexprvalue="true" type="java.util.collection" %>
<ul>
    <c:forEach var="node" items="${nodes}">
        <li><c:out value="${node.text}"/>
            <c:if test="${!empty node.subNodes}">
                <myTags:tree nodes="${node.subNodes}">
            </c:if>
        </li>
    </c:forEach>
<ul>
person JB Nizet    schedule 28.01.2013
comment
Это моя основная цель, но просто вложенных тегов недостаточно. Я ищу, чтобы строка кода jsp, сгенерированного в java, была проанализирована и интерпретирована контейнером. - person philfo; 29.01.2013
comment
Большое спасибо. Я оставлю это немного на случай, если кому-то еще есть что добавить. Если нет или если невозможность подтвердится, я приму ответ. - person philfo; 29.01.2013