Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to obtain request / session / servletcontext attribute in JSP using EL?

Tags:

jsp

jstl

el

I know this isn't hard, but I'm not having any luck.

I want to make fooList from a Servlet available in a JSP. So in the Servlet I have:

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

Then in the JSP, I want:

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

Where SOME_EL_HERE is an expression that retrieves the attribute that I have set on the request.

Any thoughts? My preference is to not complicate a simple task by adding a framework, but I'm open to changes in strategy.

like image 972
Eric Wilson Avatar asked Aug 26 '10 20:08

Eric Wilson


1 Answers

It's just the attribute name as you've set yourself here:

request.setAttribute("list", fooList);

It's thus "list":

${list}

This works the same way for session.setAttribute("name", value) and application.setAttribute("name", value). The value is in EL available by just ${name}.


More detail: EL uses by default PageContext#findAttribute() which scans in subsequently the page, request, session and application scopes for the firstnext non-null attribute value matching the given attribute name.

If you'd like to explicitly specify the scope for the case that you've multiple attributes with the same name in different scopes, then normal approach is to use ${pageScope}, ${requestScope}, ${sessionScope} or ${applicationScope}. E.g.

${requestScope.list}

See also:

  • Unified expression language in Java EE 5 tutorial
like image 166
BalusC Avatar answered Oct 20 '22 00:10

BalusC