一尘不染

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

jsp

我知道这并不难,但是我没有任何运气。

我想fooList从JSP中可用的Servlet中获取。所以在Servlet中,我有:

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

有什么想法吗?我的首选是不要通过添加框架使简单的任务复杂化,但是我愿意接受战略上的变化。


阅读 428

收藏
2020-06-08

共1个答案

一尘不染

这只是您在此处设置的属性 名称

request.setAttribute("list", fooList);

因此"list"

${list}

session.setAttribute("name", value)和和的工作方式相同application.setAttribute("name", value)。该值在EL中仅可用${name}


更多详细信息:EL默认情况下使用,PageContext#findAttribute()它随后在页面,请求,会话和应用程序范围内扫描与给定属性名称匹配的firstnext非null属性值。

如果您想明确指定范围,为您所用的不同范围的多个同名的属性的话,那么正常的方法是使用${pageScope}${requestScope}${sessionScope}${applicationScope}。例如

${requestScope.list}

也可以看看:

2020-06-08