views:

28

answers:

1

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.

+5  A: 

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

request.setAttribute("list", fooList);

It's thus "list":

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

More detail: EL uses by default PageContext#findAttribute() which scans in subsequently the page, request, session and attribute 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.

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

See also:

BalusC
Hmm, not only is that easier than ${pageContext.request.attribute.list}, but it works, too. Thanks much.
FarmBoy
You're welcome. I added a bit more detail so that you at least understand what it is doing under the covers :)
BalusC