如何使用EL获取JSP中的request/session/servletcontext属性?

Eri*_*son 31 java jsp servlets jstl el

我知道这并不难,但我没有运气.

我想fooList从JSP中提供的Servlet中创建.所以在Servlet中我有:

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

然后在JSP中,我希望:

<c:forEach var="post" items="${SOME_EL_HERE}">
    <!-- stuff -->
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

哪个SOME_EL_HERE表达式检索我在其上设置的属性request.

有什么想法吗?我的偏好是不通过添加框架使一个简单的任务复杂化,但我对战略的变化持开放态度.

Bal*_*usC 46

这只是你在这里设置的属性名称:

request.setAttribute("list", fooList);
Run Code Online (Sandbox Code Playgroud)

因此"list":

<c:forEach var="post" items="${list}">
Run Code Online (Sandbox Code Playgroud)

更多细节:默认情况下PageContext#findAttribute(),EL使用它随后扫描与给定属性名称匹配的第一个非空属性值的页面,请求,会话和应用程序范围.

如果你想明确地为您与在不同的范围相同名称的多个属性的情况下的范围,那么正常的方法是使用${pageScope},${requestScope},${sessionScope}${applicationScope}.例如

<c:forEach var="post" items="${requestScope.list}">
Run Code Online (Sandbox Code Playgroud)

也可以看看: