Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
429 views
in Technique[技术] by (71.8m points)

playframework - How can I influence the redirect behavior in a play-controller?

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:

  1. If your method is annotated by an annotation from the package play.mvc, for example the Before-annotation.
  2. You annotate your action with the 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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...