Как создать Макрос / Сниппет / HTML-фрагмент / Именованный раздел в JSP без использования тегов /includes/JSPFragments?
-
19-09-2019 - |
Вопрос
Это может быть вопрос для очень новичка, но я не нашел ничего удовлетворяющего
Я хочу сделать что-то подобное в JSP (желательно из коробки):
например ,в файле под названием products.jsp
воображаемая реализация, которая объясняет, чего я хочу
<x:named-segment name="product">
Product: <strong>${product.name}</strong> <br/>
price: ${product.price}
</x:named-segment>
и позже используйте это в различных местах в то же самое JSP это определено
<table>
<c:forEach var="product" items="${products}">
<tr>
<td><x:use-segment name="product"/></td>
</tr>
</c:forEach>
</table>
Я изучил Теги JSP, и Фрагменты JSP, но там фрагмент фрагмента просто передается из вызывающего JSP в тег JSP , и я хочу, чтобы он находился в том же месте
Единственное ли решение - создать тег JSP для этого конкретного небольшого фрагмента (или включить?)
Я упускаю что-то очень простое?
Решение
Если небольшой фрагмент текста, который вы хотите использовать во многих местах, является статичным, я бы рекомендовал включить JSP.Однако, если текст взят из базы данных / плоского файла / XML, я бы рекомендовал использовать пользовательский тег.Из приведенного вами примера создается впечатление, что вы пытаетесь составить список товаров и их цен.Это может быть легко выполнено с помощью пользовательского тега.
В вашем классе тегов прочитайте данные, создайте метод, который создаст HTML-теги для данных и вернет их в виде строки, распечатайте строку.Теперь в вашем JSP вызовите пользовательский тег везде, где вам нужен текст.Конечно, вам нужно параметризовать тег, чтобы определить, что извлекать / отображать в каком месте.
HTH
V
Другие советы
Я чувствую твою боль @EranMedan , все еще не могу поверить, что это не особенность JSP.После многих лет желания этого, я написал здесь свое собственное простое решение, чтобы делать то, что вы (и я) хотим:https://stackoverflow.com/a/25575120/1607642