如何在JSP中创建Macro / Snippet / HTML Fragment / Named部分而不使用tags / includes / JSPFragments?

时间:2010-02-08 10:11:15

标签: java jsp jsp-tags jsp-fragments

这可能是一个非常新手的问题,但我找不到任何令人满意的问题

我想在JSP中做这样的事情(开箱即用):

e.g。在一个名为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 个答案:

答案 0 :(得分:1)

如果您想要在许多地方使用的小文本是静态的,我建议使用JSP include。 但是,如果文本来自数据库/平面文件/ XML,我建议使用自定义标记。 从您提供的示例中可以看出,您似乎正在尝试列出产品及其价格。这可以通过自定义标签轻松完成。

在您的标记类中,读取数据,创建一个方法,为数据创建HTML标记并以字符串形式返回,打印字符串。 现在在JSP中,在需要文本的任何地方调用自定义标记。 当然,您需要参数化标签以确定在哪个地方获取/显示的内容。

HTH

V

答案 1 :(得分:0)

我觉得你的痛苦@EranMedan,仍然不能相信这不是JSP的一个特色。经过多年的努力,我在这里编写了自己的简单解决方案,以满足您(和我)的需求: https://stackoverflow.com/a/25575120/1607642