我想在c:forEach
中使用<% JavaCode/JSPCode %>
中的实际项目。
如何访问此项目?
<c:forEach var="item" items="${list}">
<% MyProduct p = (MyProduct) ${item}; %> <--- ???
</c:forEach>
答案 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>