JSTL forEach在java代码中使用变量

时间:2010-11-13 17:34:32

标签: java jsp foreach jstl

我想在c:forEach中使用<% JavaCode/JSPCode %>中的实际项目。 如何访问此项目?

<c:forEach var="item" items="${list}">
   <% MyProduct p = (MyProduct) ${item}; %>   <--- ???
</c:forEach>

2 个答案:

答案 0 :(得分:18)

<% %>内的任何内容都必须是有效的Java,${item}不是。 ${...}是JSP EL语法。

你可以这样做:

<c:forEach var="item" items="${list}">
   <% MyProduct p = (MyProduct) pageContext.getAttribute("item"); %>   
</c:forEach>

然而,这是编写JSP的一种可怕方式。当你已经在使用JSTL / EL时,为什么要使用scriptlet?显然你在<forEach>内放了一些东西,无论它是什么,你都应该可以不使用scriptlet。

答案 1 :(得分:9)

不要使用scriptlet(即<% %>标签之间的东西。它被认为是不好的做法,因为它鼓励在视图上下文中放置太多代码,甚至业务逻辑。相反,坚持使用JSTL和EL表达式。试试这个:

<c:forEach var="item" items="${list}">
    <c:set var="p" value="${item}" />
</c:forEach>