Ошибка проверки при вызове статической функции в контроллере playframework - PullRequest
1 голос
/ 04 марта 2012

Я пытаюсь вызвать статическую функцию (Users.dashboard ()) во время выполнения и получаю исключение Verify Error.Класс users наследует CRUD.java и не принимает никаких параметров.

В Home.index ():

   public class Home extends Controller {

    public static void index() {

        for (Class<CRUD> clazz : play.Play.classloader
                        .getAssignableClasses(CRUD.class)) {
                    Dashboard d;
                    try {

                        Method m = clazz.getMethod("dashboard");
                        if (m != null) {
                            d = (Dashboard) m.invoke(clazz.newInstance(), new Object[] {});
                        }

                    } catch (SecurityException e) {
                        e.printStackTrace();
                    } catch (ClassNotFoundException e) {
                    } catch (Exception e) {
                    }
                }
    render(dashboards);
}

Вывод на консоль:

@69iahfk3j
Internal Server Error (500) for request GET /home

Oops: VerifyError
An unexpected error occured caused by exception VerifyError: (class: controllers/Home, method: index signature: ()V) Register 1 contains wrong type

play.exceptions.UnexpectedException: Unexpected Error
    at play.Invoker$Invocation.onException(Invoker.java:242)
    at play.Invoker$Invocation.run(Invoker.java:284)
    at Invocation.HTTP Request(Play!)
Caused by: java.lang.VerifyError: (class: controllers/Home, method: index signature: ()V) Register 1 contains wrong type
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427)
    at java.lang.Class.getDeclaredMethods(Class.java:1791)
    at play.utils.Java.findActionMethod(Java.java:98)
    at play.mvc.ActionInvoker.getActionMethod(ActionInvoker.java:602)
    at play.mvc.ActionInvoker.resolve(ActionInvoker.java:85)
    ... 1 more

1 Ответ

1 голос
/ 05 марта 2012

Открытые статические методы в контроллерах улучшены с помощью Play, поэтому вызов этих методов может быть проблематичным.

Вы аннотировали этот метод с помощью @Util, если это служебный метод?

Если вы просто хотите перенаправить на панель мониторинга в этом случае, вы можете просто использовать перенаправление для действия, что-то вроде

redirect("Users.dashboard");
...