Поздравления, вот в чем проблема. У меня есть страница под названием entList.jsp, который работает с коллекцией:Может ли jsp: param хранить коллекцию?
<c:forEach var = "pack" items = "${packingList}">
<!--Here goes something with outputting the pack instance in a required format-->
</c:forEach>
Все прекрасно работает, и параметр packingList передается в качестве атрибута запроса с помощью обработчика действий, который вызывает эту страницу , На самом деле упаковкаList имеет тип Collection <GenericBean>.
Оказалось, что эта страница (ее фрагмент) на самом деле очень полезна и может использоваться во многих местах с разными коллекциями. Так что я попытался включить эту страницу, как это (в другой странице):
<jsp:include page="entList.jsp">
<!-- Pass the required collection as a parameter-->
<jsp:param name = "packingList" value = "${traffic.packingList}"/>
</jsp:include>
Однако теперь этот фрагмент не видит аргумент packingList. Я попытался переписать фрагмент, как это (так как теперь это параметр):
<c:forEach var = "pack" items = "${param.packingList}">
<!--Here goes something with outputting the pack instance in a required format-->
</c:forEach>
Но теперь он генерирует исключение, так как он относится к packingList в виде строки, а не в коллекции. Так что сейчас решение, как это - установить требуемую коллекцию в качестве атрибута в коде обработчика действий:
// This is the original instance set by the action
request.setAttribute("traffic", traffic);
// And this is the additional one, to be used by entList.jsp
request.setAttribute("packingList", traffic.getPackingList());
Таким образом, вопрос - может JSP: пары тега получить коллекцию, как это значение? Я прочитал документацию для JSP-тегов, и она остается неясной - кажется, что единственное, что вы можете передать таким образом, это строковые параметры (или что-то, что может быть преобразовано в строку), но не сложные объекты.