如何影响Play控制器中的重定向行为?

13

在Play框架中,如果您从控制器的公共方法调用,则始终遵循Redirect-After-Post-Pattern。这在大多数情况下是良好的行为,但有时可能会引起问题。

因此,我尝试查找在Play 1.1中如何实现它:

基本原理是一些字节码增强,这在play.classloading.enhancers.ControllersEnhancer中完成。

在那里,您可以发现仍然存在一些默认行为的例外:

  1. 如果您的方法由来自play.mvc包的注释注释,例如Before注释。
  2. 使用ByPass注释注释您的操作,该注释必须是内部类,因此名称以$ByPass结尾。

这两种解决方案都可以适用于您始终希望禁止重定向的情况。但如果您只想在特殊情况下执行此操作怎么办?

那么,您可以调用ControllerInstrumentation.initActionCall()

我没有找到关于它的描述,我只是分析了代码。我的结论是否正确或是否存在任何缺点?


initActionCall确实很有用,如果您需要调用另一个视图但不想重定向:http://groups.google.com/group/play-framework/browse_thread/thread/59c2aebefb94aac5/62651072b74275e1?lnk=gst&q=redirect#3f5ccb63d4652565 - Stefano
1个回答

2
据我所知,你的假设是正确的。但是,根据我的理解,你想要一种在执行后结束并且不返回任何东西的方法?不要在最后添加任何"render"调用(或调用其他方法),那样就可以工作了。我用它来处理计划任务。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接