1

我想重定向回 playframework 中的引荐来源网址,并且我尝试在控制器中的日志功能请求后记录此网址:

@After
public static void log(){
    session.put("referrer", request.url);
}

它有效,但我不想在每个控制器中编写相同的代码。当我让所有控制器扩展 AbstractController 类(扩展play.Controller)并将此代码放入 AbstractController 时,我收到此错误:

Unexpected error : Cannot read parameter names for public static void controllers.AbstractController.log()

谁能帮我。提前致谢。

4

2 回答 2

3

尝试在实用程序对象中添加此方法并使用 @With 注释您的控制器

public class ControllerUtil extends Controller{
    @After
    public static void log(){
        session.put("referrer", request.url);
    }
}

@With(ControlerUtil.class)
public MyController extends Controller{
   public static index(){
      render();
   }
}

或者使用 @Util 注释您的日志方法

更新

正确,您需要让 ControllerUtil 扩展 Controller。如果您更喜欢将其命名为 Application 而不是 ControllerUtil

于 2012-03-26T05:17:18.003 回答
2
request.headers.get("referer");
于 2015-05-15T14:30:35.667 回答