【问题标题】:play framework 1.4 - How to intercept static method call and redirec to anotherplay framework 1.4 - 如何拦截静态方法调用并重定向到另一个
【发布时间】:2018-02-11 20:56:34
【问题描述】:

我想要拦截(而不是覆盖)控制器static 方法调用并(如果标志为真..)重定向到另一个控制器中的另一个方法。

如果配置标志为真而没有覆盖,我需要重新定义方法。

public class Utils extends Controller {
    private static String pippo() {
        return "1";
    }
}

public class Another extends Controler {
    private static String pippo() {
        return "2";
    }
}

System.out.println(Utils.pippo());
out: 2

【问题讨论】:

  • 这些应该是动作方法吗?如public static void?
  • no...是控制器类中的重定向函数...我想拦截所有重定向调用,因为我想覆盖静态函数(我想在所有内部重定向调用中附加额外的参数).. . 一个拦截器模式
  • 你可以使用其中一个播放拦截器,比如@Beforeplayframework.com/documentation/1.4.x/controllers#interceptions

标签: java interceptor playframework-1.x


【解决方案1】:

我找到的解决方案是:

public class MyController extends InterceptController {
    protected static void redirect(String url) {
        // default redirect impl.
        ...
    }
} 

public class InterceptController extends Controller {

    // re-write static method
    protected static void redirect(String url) {
        if (isActive()) {
            new RedirectWID(url).invoke(); // new impl. if flag is true
        } else {
            Controller.redirect(url);  // old impl. if flag = false
        }
    }
    ...
}

【讨论】:

    猜你喜欢
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 2013-06-27
    • 2020-05-08
    • 1970-01-01
    相关资源
    最近更新 更多