当前位置 : 主页 > 编程语言 > java >

jsp:param可以存储一个集合吗?

来源:互联网 收集:自由互联 发布时间:2021-06-25
问候,这是问题所在.我有一个名为entList.jsp的页面,它与集合一起使用: c:forEach var = "pack" items = "${packingList}"!--Here goes something with outputting the pack instance in a required format--/c:forEach 一切都很
问候,这是问题所在.我有一个名为entList.jsp的页面,它与集合一起使用:

<c:forEach var = "pack" items = "${packingList}">
<!--Here goes something with outputting the pack instance in a required format-->
</c:forEach>

一切都很好,参数packingList作为请求的属性被调用此页面的动作处理程序传递.实际上,packingList的类型为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:param标签能否收到一个集合作为它的价值?我阅读了JSP标记的文档,但仍然不清楚 – 它似乎是唯一能以这种方式传递它的字符串参数(或者可以转换为字符串的东西),但没有复杂的对象.

您应该使用标记文件,并使用正确的参数类型声明标记.

例如as packingList.tag

<%@tag %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@attribute name="packingList" required="true" type="java.util.Collection<Packing>"
        description="the packing list." %>
<c:forEach var = "pack" items = "${packingList}">
<!--Here goes something with outputting the pack instance in a required format-->
</c:forEach>

然后,将此文件放在WEB-INF /标签中

然后,添加到您的jsp文件

<%@ taglib tagdir="/WEB-INF/tags" prefix="pack" %>

<pack:packingList packingList="${packingList}"/>

有关详细信息,请参阅http://download.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html

网友评论