Hvordan får man adgang til en anmodningsattribut indstillet af en servlet i JSP?
Jeg forsøger at hente attributværdier indstillet af en servlet på en JSP-side, men jeg har kun held med parametre ved ${param}
. Jeg er ikke sikker på, hvad jeg kan gøre anderledes. Måske er det enkelt, men jeg kunne ikke klare det endnu.
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); }
I JSP'en har jeg forsøgt at hente "attribValue", men uden held:
<body> <!-- Is there another tag instead of "param"??? --> <p>Test attribute value: ${param.attrib} </body>
Hvis jeg sender en parameter gennem hele processen (påkalder side, servlets og destinationsside), fungerer det ganske godt.
Svar
Den er allerede tilgængelig i standard EL-omfanget, så bare
${attrib}
burde gøre.
Hvis du eksplicit ønsker at specificere omfanget (EL vil nemlig søge på siden, anmodningen, sessionen og applikationsomfangene i rækkefølge efter den første ikke-nul attributværdi, der matcher attributnavnet), så skal du henvise til den ved hjælp af omfangskortet i stedet, som er ${requestScope}
for anmodningens omfang
${requestScope.attrib}
Dette er kun nyttigt, hvis du har evt. en attribut med nøjagtig det samme navn i sideomfanget, som ellers ville få forrang (men sådanne tilfælde indikerer normalt dårligt design trods alt).
Se også:
- Vores EL wiki-side
- Java EE 6 tutorial – Expression Language