In play you always follow the Redirect-After-Post-Pattern if you call from a public-method of a controller. This is in most cases a good behavior, but sometime it could be nasty.
So I tried to find out how it works in play 1.1!:
The basic is some byte-code-enhancement, which is done in play.classloading.enhancers.ControllersEnhancer
.
There you can find that there still exists some exceptions of the default behavior:
play.mvc
, for example the Before-annotation. ByPass
-Annotation, this Annotation must be an inner-class so the name endsWith $ByPass
.Both solutions are fine if you always want to suppress the redirect. But what if you only want to do it in special situation?
Then you can call ControllerInstrumentation.initActionCall()
.
I don't find a description about it, I just analyze the code. So are my conclusion correct or have the any drawbacks?
For what I know you assumptions are correct.
That said, for what I understand you want a method that ends after execution and returns nothing? Don't add any "render" call at the end (or any call to another method) and that should work. I use it for cron jobs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With