JSTL forEach在javacode中使用变量

Chr*_*ler 13 java foreach jsp jstl

我想用实际的项目从我c:forEach<% JavaCode/JSPCode %>.我如何访问此项目?

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

ska*_*man 18

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

你可以这样做:

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

但是,这是编写JSP的一种可怕方式.当你已经在使用JSTL/EL时,为什么要使用scriptlet?显然,你正在把它放在那里<forEach>,不管它是什么,你应该能够不使用scriptlet.


Asa*_*aph 9

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

<c:forEach var="item" items="${list}">
    <c:set var="p" value="${item}" />
</c:forEach>
Run Code Online (Sandbox Code Playgroud)