Подтвердить что ты не робот

Передайте общий список в тег 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

Я уверен, что есть только некоторый синтаксис описания типичного типа в директиве атрибута, но я не могу найти никаких примеров.

4b9b3361

Ответ 1

Вам не нужно указывать общий тип. type="java.util.List" должен работать. Ваша конкретная проблема возникает в другом месте.

Ответ 2

У меня была такая же проблема, но я понял, что я отправляю String не фактический Object. Возможно, у вас была такая же ошибка.:)