Ich habe ein Wicket-Formular, die Benutzer sollten eine Datei zum Download geben. Die Datei wird von einem externen Servlet (basierend auf dem Formular) generiert, das den generierten Inhalt in den Ausgabestream der Antwort schreibt.Wicket: Redirect zu freigegebenen Ressource
normalerweise kann dies unter Verwendung auf Formular übermittelt werden, wobei redirectUrl
die externe Servlet-URL mit Parametern sein wird.
jedoch redirectUrl
zeigt sich in Browser-Adressleiste, die nicht gut ist, wie Benutzer Parameterwerte sehen, die sie nicht sollten.
Um dies zu überwinden, habe ich eine benutzerdefinierte DynamicWebResource
implementiert, die die Servlet-Ausgabe als byte[]
abgerufen und ist gebunden an eine virtuelle URL durch übliche Wicket freigegebenen Ressourcenmechanismus.
auf Formular i wie folgt vor:
RequestParameters rps = new RequestParameters();
rps.setResourceKey(new ResourceReference("myResource").getSharedResourceKey());
getRequestCycle().setRequestTarget(new SharedResourceRequestTarget(rps));
und dann verlassen sich auf Wicket internen Möglichkeiten der Handhabung.
Beim Debuggen kann ich deutlich sehen, dass meine freigegebene Ressource korrekt aufgerufen wird, die Antwort des externen Servlet wird korrekt generiert, abgerufen und dann in die aktuelle Antwort mit allen Headern und Zeug geschrieben, aber danach passiert nichts, keine Fehler nichts.
wenn ich meine freigegebene Ressource direkt unter Angabe der URL-Wicket hat es gebunden (wie http://localhost:8080/webAppRoot/wicket/myResource?param1=value
) - alles funktioniert, Datei ist wohlgeformt und herunterladbar.
Gibt es noch etwas, was ich noch tun muss? es ist wahrscheinlich etwas Dummes, aber ich habe mir schon seit einem Tag den Kopf gegen die Wand geschlagen ...
Können Sie die relevanten Teile des Handlers onSubmit() posten? – bert
es ist schon da, sonst nichts. Das gesamte aktuelle Geschäft wird in meiner freigegebenen Ressource erledigt. –