play framework 1.4 - 如何拦截静态方法调用和redirec到另一个

时间:2018-02-11 20:56:34

标签: java interceptor playframework-1.x

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

如果config标志为true而没有覆盖,我需要重新定义一个方法。

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

1 个答案:

答案 0 :(得分:0)

我找到的解决方案是:

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
        }
    }
    ...
}