Я хочу использовать фактический элемент из моего c:forEach
в файле <% JavaCode/JSPCode %>
. Как получить доступ к этому элементу?
<c:forEach var="item" items="${list}">
<% MyProduct p = (MyProduct) ${item}; %> <--- ???
</c:forEach>
Я хочу использовать фактический элемент из моего c:forEach
в файле <% JavaCode/JSPCode %>
. Как получить доступ к этому элементу?
<c:forEach var="item" items="${list}">
<% MyProduct p = (MyProduct) ${item}; %> <--- ???
</c:forEach>
Не используйте скриптлеты (т. е. то, что находится между тегами <% %>
. Это считается плохой практикой, поскольку поощряет размещение слишком большого количества кода, даже бизнес-логики, в контексте представления. Вместо этого придерживайтесь исключительно выражений JSTL и EL. Попробуйте следующее:
<c:forEach var="item" items="${list}">
<c:set var="p" value="${item}" />
</c:forEach>
Все, что находится внутри <% %>
, должно быть допустимым Java, а ${item}
— нет. ${...}
— это синтаксис JSP EL.
Вы можете сделать это следующим образом:
<c:forEach var="item" items="${list}">
<% MyProduct p = (MyProduct) pageContext.getAttribute("item"); %>
</c:forEach>
Однако это ужасный способ написания JSP. Почему вы хотите использовать скриптлеты, если вы уже используете JSTL/EL? Очевидно, вы что-то вставляете в этот <forEach>
, и что бы это ни было, вы сможете обойтись без скриптлета.