Play 2不会在Global的onRequest中调用提供的操作方法

时间:2014-08-14 12:05:51

标签: java playframework playframework-2.2

我尝试根据我之前在会话中添加的内容调用不同的操作方法。为此,我在Play's tutorial中推荐使用Global中的onRequest方法。我使用Java反射来构造一个具有相同名称和参数但在不同类B中的新方法.B类和原始类与原始actionMethod实现相同的接口。所以不应该是一个问题。

我在全球的onRequest看起来像:

@Override
public Action onRequest(Request request, final Method actionMethod) {
    if (checkSomething) {
        return super.onRequest(request, getNewActionMethod(actionMethod));
    }
    return super.onRequest(request, actionMethod);
}

private Method getNewActionMethod(Method oldActionMethod) {
    String name = oldActionMethod.getName();
    Class<?>[] parameterTypes = oldActionMethod.getParameterTypes();
    Method newActionMethod = null;
    try {
        newActionMethod = B.class.getMethod(name, parameterTypes);
    } catch (NoSuchMethodException | SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return newActionMethod;
}

这里的问题是Play只是忽略了我的新动作方法,并坚持要求旧动作方法。我错过了什么吗?

我正在使用Play framework 2.2.3。

0 个答案:

没有答案