In der benutzerdefinierten JSP -Tag -Datei kann nicht auf das implizite Objekt aus der Methode zugreifen

StackOverflow https://stackoverflow.com/questions/2958817

  •  23-10-2019
  •  | 
  •  

Frage

Ich versuche, ein benutzerdefiniertes JSP -Tag zu erstellen. Alles funktioniert gut, außer dass ich die Anfrage für meine benutzerdefinierte Funktion zu sein scheint.

Hier ist das relevante Bit aus der .tag -Datei:

<%!
private  String process(String age, BigDecimal amount)
        {
//Attempting to access request here results in an compile time error trying to:
String url=request.getURL;
        }
%>

Ich bin sehr neu in JSP, also bin ich sicher, dass mir etwas Offensichtliches fehlt. Aber ich kann nicht herausfinden, was. Jede Hilfe wird geschätzt.

War es hilfreich?

Lösung

Ich vermute, das liegt daran, dass die benutzerdefinierte Funktion selbst nicht in der Hauptausführung des Dienstaufrufs des JSP definiert ist, sondern als separate Methode innerhalb der generierten JSP -Klasse definiert ist. Als solche die request Variable ist nicht implizit sichtbar.

Um zu verdeutlichen, wenn Sie sich die Java -Quelle angesehen haben, die der JSP -Compiler generiert (was AppServer spezifisch ist), werden Sie sehen, wie er zusammen hängt.

Ich denke, Sie müssen das Anforderungsobjekt als Parameter für Ihre Funktion deklarieren und es eingeben, wenn Sie es aufrufen.

<%!
private String process(String age, BigDecimal amount, ServletRequest request) {
   String url=request.getURL;
   ....
}
%>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top