Как создать раздел макроса / фрагмента / фрагмента HTML / именованного в JSP без использования тегов / include / JSPFragments? - PullRequest
4 голосов
/ 08 февраля 2010

Это может быть очень новый вопрос, но я не нашел ничего удовлетворительного

Я хочу сделать что-нибудь подобное в 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 Fragements , но там фрагмент фрагмента просто передается из вызывающей JSP в тег JSP, и я хочу, чтобы в том же месте

Единственное решение - создать тег JSP для этого конкретного небольшого фрагмента (или включить?)

Мне не хватает чего-то очень простого?

Ответы [ 2 ]

1 голос
/ 18 марта 2010

Если небольшой фрагмент текста, который вам нужен во многих местах, является статичным, я бы порекомендовал включить JSP. Однако, если текст взят из базы данных / плоского файла / XML, я бы порекомендовал использовать пользовательский тег. Из приведенного вами примера видно, что вы пытаетесь перечислить продукты и их цену. Это можно легко сделать с помощью пользовательского тега.

В вашем классе тегов прочитайте данные, создайте метод, который будет создавать теги HTML для данных и возвращать в виде строки, печатать строку. Теперь в вашем JSP вызывайте пользовательский тег везде, где вам нужен текст. Конечно, вам нужно параметризовать тег, чтобы определить, что выбрать / показать в каком месте.

НТН

V

0 голосов
/ 21 августа 2015

Я чувствую вашу боль @EranMedan, все еще не могу поверить, что это не особенность JSP. После многих лет желаний я написал собственное простое решение, чтобы сделать то, что вы (и я) хотите: https://stackoverflow.com/a/25575120/1607642

...