it-swarm.com.de

Wie greife ich auf ein Anforderungsattribut zu, das von einem Servlet in JSP festgelegt wurde?

Ich versuche, Attributwerte abzurufen, die von einem Servlet auf einer JSP-Seite festgelegt wurden, aber ich habe nur Glück mit Parametern von ${param}. Ich bin mir nicht sicher, was ich anders machen kann. Vielleicht ist es einfach, aber ich konnte es noch nicht schaffen.

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);
}

In der JSP habe ich versucht, den "attribValue" abzurufen, aber ohne Erfolg:

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

Wenn ich während des gesamten Vorgangs einen Parameter übergebe (Aufrufen von Seite, Servlets und Zielseite), funktioniert dies recht gut.

21
Alex

Es ist bereits im Standard-EL-Bereich verfügbar, also nur

${attrib}

sollte tun.

Wenn Sie den Bereich explizit angeben möchten (EL durchsucht die Bereiche für Seite, Anforderung, Sitzung und Anwendung nacheinander nach dem ersten Attributwert, der nicht null ist und mit dem Attributnamen übereinstimmt), müssen Sie ihn stattdessen über die Bereichszuordnung referenzieren. welches ist ${requestScope} für den Anforderungsumfang

${requestScope.attrib}

Dies ist nur nützlich, wenn Sie möglicherweise ein Attribut mit genau demselben Namen im Seitenbereich haben, das andernfalls Vorrang erhalten würde (in diesem Fall wird jedoch normalerweise auf ein schlechtes Design hingewiesen) Letztendlich).

Siehe auch:

28
BalusC

Vielleicht hilft Ihnen ein Vergleich zwischen der EL -Syntax und der scriptlet -Syntax, das Konzept zu verstehen.

  • param ist wie request.getParameter()
  • requestScope ist wie request.getAttribute()

Sie müssen request attribute Von request parameter Unterscheiden.

9
smwikipedia

haben Sie versucht, ein Ausdrucks-Tag zu verwenden?

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

Wenn der Gültigkeitsbereich vom Anforderungstyp ist, setzen wir das Attribut mit request.setAttribute (Schlüssel, Wert) in request und rufen es mit $ {requestScope.key} in jsp ab.

0
Kumar Abhi