Wie kann ich die Umleitung Verhalten in einem Play-Controller beeinflussen?
-
29-09-2019 - |
Frage
Sie spielen die immer folgen Redirect-After-Post-Muster , wenn Sie von einer öffentlich-Methode eines Controllers aufrufen. Dies ist in den meisten Fällen ein gutes Verhalten, aber irgendwann könnte es böse sein.
Also habe ich versucht, um herauszufinden, wie es funktioniert im Spiel 1.1 !:
Der Grund ist einig Byte-Code-Erweiterung, die in play.classloading.enhancers.ControllersEnhancer
erfolgt.
Dort kann man feststellen, dass es immer noch einige Ausnahmen von dem Standardverhalten vorhanden ist:
- Wenn Ihre Methode wird durch eine Anmerkung aus dem Paket
play.mvc
kommentiert zum Beispiel der Vor-Annotation. - Sie Ihre Aktion mit dem
ByPass
-Annotation mit Anmerkungen versehen, diese Annotation muss eine innere Klasse so der Name endsWith$ByPass
sein.
Beide Lösungen sind in Ordnung, wenn man immer die Umleitung zu unterdrücken wollen. Aber was, wenn Sie es nur in besonderer Situation zu tun?
Dann können Sie ControllerInstrumentation.initActionCall()
nennen.
Ich habe keine Beschreibung darüber finden, analysiere ich nur den Code. So sind meine Schlussfolgerung richtig oder haben die irgendwelche Nachteile?
Lösung
Für das, was ich weiß, Sie Annahmen richtig sind.
sagte, dass, für das, was ich verstehe Sie eine Methode wollen, dass endet nach nichts Ausführung und kehrt? Fügen Sie keinen „machen“ Anruf am Ende (oder einen Anruf an einem anderen Methode) und das sollte funktionieren. Ich benutze es für Cron-Jobs.