我正在写一个 PlayPlugin。在 rawInvocation(request, response) 方法中,我创建了一个我希望所有控制器都可以访问的对象。实现这一目标的首选方法是什么?每个用户都有自己的对象。似乎尚未创建 Play 会话,因此我无法将其存储在那里。谢谢
克里斯蒂安·古尔德纳
我正在写一个 PlayPlugin。在 rawInvocation(request, response) 方法中,我创建了一个我希望所有控制器都可以访问的对象。实现这一目标的首选方法是什么?每个用户都有自己的对象。似乎尚未创建 Play 会话,因此我无法将其存储在那里。谢谢
克里斯蒂安·古尔德纳
如果你想使用你的插件创建一个全局过滤器,那么最好覆盖PlayPlugin.beforeActionInvocation
方法:
public class MyPlugin extends PlayPlugin{
@override public void beforeActionInvocation(Method actionMethod) {
Object myObject = ...
Http.Request.current().args.put("myobject", myObject);
}
}
在您的任何控制器中,您都可以通过以下方式获取对象:
对象我的对象 =Http.Request.current().args.get("myobject")
我不确定这是否是最好的或推荐的方式,但您始终可以将其添加到 request.param