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