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.
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).
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
.
avez-vous essayé d'utiliser une balise d'expression?
<%= request.getAttribute("attrib") %>
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.