将通用List传递给JSP标记

时间:2012-03-26 16:55:25

标签: java jsp

我正在使用JSP标记来封装可重用的前端逻辑。

我可以成功地将复杂对象com.example.Product传递给标记,但是我将List<Product>传递给标记时遇到了问题。

这是我的product.tag

<%@ attribute name="product" required="true" type="com.example.Product" %>
<a href="/products/${product.id}/${product.slug}">${product.name}</a>

我可以在JSP页面上使用它,如下所示:

<%@ taglib tagdir="/WEB-INF/tags" prefix="h" %>
<h:product product="${myProduct}"/>

现在,我想创建一个标签来显示产品列表。我坚持如何在属性声明中描述类型:

<%@ attribute name="products" required="true" type="???" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<ul>
<c:forEach items="${products}" var="product">
  <li><h:product product="${product}"/></li>
</c:forEach>
</ul>

我尝试了以下内容:

  • List<com.example.Product>
  • java.util.List<com.example.Product>

两者都会产生以下错误:Unknown attribute type (java.util.List<com.example.Product>) for attribute products

我确定如何在属性指令中描述泛型类型只有一些语法,但我找不到任何示例。

2 个答案:

答案 0 :(得分:18)

您无需指定泛型类型。 type="java.util.List"必须有效。你的具体问题是由其他地方造成的。

答案 1 :(得分:1)

我有同样的问题,但我意识到我发送的字符串不是实际的对象。 也许你有同样的错误。 :)