Я искал способ создать пользовательский тег JSTL, который возвращает объект или карту, вместо того, чтобы просто использовать out.print
для выгрузки разметки непосредственно из кода.
В частности, что я 'я пытаюсь сделать:
<c:set var="links">
<util:getLinks cmsComponent="[id of some xml structure]" xPath="[start point]" />
</c:set>
<!-- parse the obtained structure into a nice ul -->
Я знаю, что могу:
- использовать мой контроллер для этого и передать вычисленный объект обратно в представление.К сожалению, CMS, которую мы должны использовать, делает это намного более уродливым, чем было бы делать это в представлении - получение идентификатора компонента в коде Java является проблемой.Я знаю, что это отстой.
- создайте функцию EL, которая возвращает объект, и выполните:
<c:set var="links" value="${util:getLinks(componentId, xPath)}" />
Мне интересно, могу ли я сделать это с помощью пользовательского тега, так как я не смог найтичто-нибудь, прибегая к помощи.