web-dev-qa-db-fra.com

Comment accéder à un attribut de requête défini par un servlet dans JSP?

J'essaie de récupérer les valeurs d'attribut définies par une servlet dans une page JSP, mais je n'ai de chance avec les paramètres que par ${param}. Je ne suis pas sûr de ce que je peux faire de différent. C'est peut-être simple, mais je n'ai pas encore réussi.

public void execute(HttpServletRequest request, HttpServletResponse response) {

    //there's no "setParameter" method for the "request" object
    request.setAttribute("attrib", "attribValue");

    RequestDispatcher rd = request.getRequestDispatcher("/Test.jsp");
    rd.forward(request,response);
}

Dans le JSP, j'ai essayé de récupérer la "attribValue", mais sans succès:

<body>
    <!-- Is there another tag instead of "param"??? -->
    <p>Test attribute value: ${param.attrib}
</body>

Si je passe un paramètre à travers tout le processus (appel de la page, des servlets et de la page de destination), cela fonctionne très bien.

21
Alex

Il est déjà disponible dans la portée EL par défaut, donc juste

${attrib}

devrait faire.

Si vous souhaitez spécifier explicitement la portée (EL recherchera notamment la page, la demande, la session et les étendues d'application en séquence pour la première valeur d'attribut non nulle correspondant au nom de l'attribut), vous devez la référencer à la place par la carte de portée, lequel est ${requestScope} pour l'étendue de la demande

${requestScope.attrib}

Ceci n'est utile que si vous avez éventuellement un attribut avec exactement le même nom dans la portée de la page qui aurait autrement la priorité (mais ce cas indique généralement une mauvaise conception après tout).

Voir également:

28
BalusC

Peut-être qu'une comparaison entre la syntaxe EL et la syntaxe scriptlet vous aidera à comprendre le concept.

  • param est comme request.getParameter()
  • requestScope est comme request.getAttribute()

Vous devez dire request attribute de request parameter.

9
smwikipedia

avez-vous essayé d'utiliser une balise d'expression?

<%= request.getAttribute("attrib") %>
2
mooonli

Si la portée est de type demande, nous définissons l'attribut à l'aide de request.setAttribute (clé, valeur) dans la demande et récupérons à l'aide de $ {requestScope.key} dans jsp.

0
Kumar Abhi