web-dev-qa-db-fra.com

Comment obtenir l'attribut request / session / servletcontext dans JSP en utilisant EL?

Je sais que ce n'est pas difficile, mais je n'ai pas de chance.

Je veux rendre fooList à partir d'un Servlet disponible dans un JSP. Donc, dans le Servlet, j'ai:

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

Ensuite, dans le JSP, je veux:

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

SOME_EL_HERE est une expression qui récupère l'attribut que j'ai défini sur le request.

Des pensées? Ma préférence est de ne pas compliquer une tâche simple en ajoutant un framework, mais je suis ouvert aux changements de stratégie.

31
Eric Wilson

C'est juste le nom de l'attribut comme vous l'avez défini ici:

request.setAttribute("list", fooList);

C'est donc "list":

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

Plus de détails: EL utilise par défaut PageContext#findAttribute() qui analyse ensuite les portées de page, de demande, de session et d'application pour la première valeur d'attribut non nulle correspondant au nom d'attribut donné.

Si vous souhaitez spécifier explicitement la portée du cas où vous avez plusieurs attributs avec le même nom dans différentes portées, l'approche normale consiste à utiliser ${pageScope}, ${requestScope}, ${sessionScope} Ou ${applicationScope}. Par exemple.

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

Voir également:

46
BalusC