JSTL forEach 在 javacode 中使用变量

2022-09-04 07:16:48

我想在 .如何访问此项目?c:forEach<% JavaCode/JSPCode %>

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

答案 1

任何进入内部的东西都必须是有效的Java,而事实并非如此。是 JSP EL 语法。<% %>${item}${...}

你可以这样做:

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

但是,这是编写 JSP 的一种可怕方式。当你已经在使用 JSTL/EL 时,你为什么要使用 scriptlet?显然,你正在把一些东西放进去,不管它是什么,你应该能够在不使用脚本的情况下完成。<forEach>


答案 2

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

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