Подтвердить что ты не робот

JSTL для каждой переменной использования в javacode

Я хочу использовать фактический элемент из моего c:forEach в <% JavaCode/JSPCode %>. Как мне получить доступ к этому элементу?

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

Ответ 1

Не используйте сценарии (т.е. материал между тегами <% %>. Он считается плохой практикой, потому что он поощряет использование слишком большого кода, даже бизнес-логики, в контексте представления. Вместо этого придерживайтесь JSTL и EL-выражений Исследуйте это:

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

Ответ 2

Все, что входит внутрь <% %>, должно быть допустимым Java, а ${item} - нет. ${...} - это синтаксис JSP EL.

Вы можете сделать это следующим образом:

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

Однако это ужасный способ написать JSP. Почему вы хотите использовать скрипты, когда вы уже используете JSTL/EL? Очевидно, что вы помещаете что-то внутри <forEach>, и что бы это ни было, вы можете обойтись без использования скрипта.