2010-11-13 4 views
12

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

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

ответ

8

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

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

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

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

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

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