Как получить атрибут request / session / servletcontext в JSP, используя EL? - PullRequest
31 голосов
/ 27 августа 2010

Я знаю, что это не сложно, но мне не повезло.

Я хочу сделать fooList из сервлета доступным в JSP.Итак, в сервлете у меня есть:

request.setAttribute("list", fooList);
RequestDispatcher dispatcher = 
  getServletContext().getRequestDispatcher("/myJsp.jsp");
dispatcher.forward(request, response);

Затем в JSP я хочу:

<c:forEach var="post" items="${SOME_EL_HERE}">
    <!-- stuff -->
</c:forEach>

Где SOME_EL_HERE - это выражение, которое возвращает атрибут, который я установилrequest.

Есть мысли?Я предпочитаю не усложнять простую задачу путем добавления каркаса, но я открыт для изменений в стратегии.

1 Ответ

46 голосов
/ 27 августа 2010

Это просто атрибут имя , как вы указали здесь:

request.setAttribute("list", fooList);

Это так "list":

<c:forEach var="post" items="${list}">

Подробнееподробно: EL использует по умолчанию PageContext#findAttribute(), который в дальнейшем сканирует области страницы, запроса, сеанса и приложения для первого непустого значения ненулевого атрибута, соответствующего данному имени атрибута.

Если вы хотите явно указать область действия для случая, когда у вас есть несколько атрибутов с одним и тем же именем в разных областях, то обычный подход заключается в использовании ${pageScope}, ${requestScope}, ${sessionScope}или ${applicationScope}.Например,

<c:forEach var="post" items="${requestScope.list}">

См. Также:

...