Java >> Java tutorial >  >> Java

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

Java tag