Как получить URL-адрес реферера в playframework

Я хочу перенаправить обратно на URL-адрес реферера в playframework, и я попытался зарегистрировать этот URL-адрес после запроса функцией журнала в контроллере:

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

Это работает, но я не хочу писать один и тот же код в каждом контроллере. Когда я разрешил всем контроллерам расширить класс AbstractController (который расширяет play.Controller) и поместил этот код в AbstracController, я получил эту ошибку:

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

Может кто-нибудь помочь мне. Заранее спасибо.


person Viet Anh    schedule 26.03.2012    source источник


Ответы (1)


попробуйте добавить этот метод в служебный объект и аннотируйте свои контроллеры с помощью @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

person emt14    schedule 26.03.2012
comment
Это не работает. класс ControllerUtil не расширяет play.mvc.Controller. Поэтому у него нет переменной сеанса? Я что-то пропустил? - person Viet Anh; 26.03.2012
comment
@JanusTroelsen: Play-1.2.3 - person Viet Anh; 31.01.2014