在play framework 2.x中,如何添加全局动作/过滤器?

use*_*023 2 locale playframework playframework-2.0

更具体地说,我需要允许在url中传递区域设置然后更改区域设置.这应该是一个全局行为,必须在调用任何操作之前发生,以便区域设置更改从当前请求生效.

GlobalSettings.onRequest()不具有Http.Context尚未绑定而据我所知,它不具备在这个阶段变更语言的API.

我可以有一个更改语言环境的操作,但我不知道如何使其全局化,以便所有请求首先进入该操作,我不想注释每个控制器,因为它很容易被遗忘.

我正在使用Play框架2.1.2,任何指针都会受到赞赏.

Nil*_*jan 5

有几种选择.

  1. 您可以注释控制器类并使用Action组合

http://www.playframework.com/documentation/2.1.2/JavaActionsComposition

  1. 使用以下内容覆盖GlobalSettings.onRequest

     @Override
     public Action onRequest(Request request, Method actionMethod) {
         return new Action.Simple() {
            public Result call(Context ctx) throws Throwable {
              **//do your lang changing stuff**
              return delegate.call(ctx);
            }
         };
     }
    
    Run Code Online (Sandbox Code Playgroud)