【发布时间】:2009-08-10 11:33:49
【问题描述】:
我有一个 for each 循环,当以下列方式使用脚本填充 items 属性时,它可以正常工作:
<%
List<LandingCategory> cats = beanFactory.getLandingCategories();
%>
<c:forEach var="cat" items="<%=cats%>">
<c:out value="${cat.id}"/>
</c:forEach>
但是,当尝试使用另一个 jsp 文件中指定的参数填充项目列表时,for each 将不起作用。
JSP1
<jsp:include page="/jsp/modules/index/index_categories.jsp">
<jsp:param name="categories" value="<%=cats%>"/>
</jsp:include>
JSP2
<c:forEach var="cat" items="${param.categories}">
<c:out value="${cat.id}"/>
</c:forEach>
抛出以下错误:
javax.servlet.jsp.el.ELException: Unable to find a value for "id" in object of class "java.lang.String" using operator "."
似乎它正在考虑将项目列表的对象视为字符串,但我不知道为什么会发生这种情况。
有人知道吗?
谢谢
【问题讨论】:
-
评论而不是回答,因为这只是一个猜测,但是:由于
<jsp:param>是一个名称-值对并且该值应该是一个字符串,我认为您的问题可能是您' 将您的整个列表强制为单个字符串。有没有办法让您将该字符串解析回列表,或者直接将其作为列表而不是作为参数的值拉入? -
非常感谢大家!我终于找到了 skaffman 的答案,效果很好。谢谢!