13

如果您从控制器的公共方法调用,则在播放中您始终遵循Redirect-After-Post-Pattern 。在大多数情况下,这是一个很好的行为,但有时它可能是令人讨厌的。所以我试图找出它在 play 1.1 中是如何工作的!:基本是一些字节码增强,这是在play.classloading.enhancers.ControllersEnhancer. 在那里您可以发现仍然存在一些默认行为的例外情况:

  1. 如果您的方法由 package 中的注释进行注释play.mvc,例如 Before-annotation。
  2. 您使用 -Annotation 注释您的操作ByPass,此 Annotation 必须是内部类,因此名称 endsWith $ByPass

如果您总是想抑制重定向,这两种解决方案都很好。但是,如果您只想在特殊情况下这样做呢?然后就可以调用了ControllerInstrumentation.initActionCall()

我没有找到关于它的描述,我只是分析代码。那么我的结论是正确的还是有任何缺点?

4

1 回答 1

2

据我所知,你的假设是正确的。

也就是说,据我所知,您想要一个在执行后结束并且什么都不返回的方法?不要在最后添加任何“渲染”调用(或对其他方法的任何调用),这应该可以工作。我将它用于 cron 作业。

于 2011-01-21T16:57:24.210 回答