Динамически загружать представления классов в Play, используя отражение в Java

1

У меня есть файл конфигурации, из которого я хочу прочитать имя представления, а затем визуализировать представление. Я пытаюсь использовать java-отражение для этого, и код выглядит примерно так:

Class viewClass = Play.current().classloader().loadClass(viewName);
Method render = viewClass.getDeclaredMethod("render");
page = (Html)render.invoke(viewClass.newInstance());

Я получаю Java.lang.ClassNotFoundException. viewName - это имя представления.

  • 0
    Что вы используете в качестве viewName (то есть значение)?
Теги:
playframework
reflection
playframework-2.0

1 ответ

1
Лучший ответ

Вы не указали, как вы получили имя класса, поэтому я представляю полный пример в этом случае для индексного представления.

String viewName = "views.html.index"
Class viewClass = Play.current().classloader().loadClass(viewName);
Method render = viewClass.getDeclaredMethod("render");
Html page = (Html) render.invoke(null);

Еще одна проблема, которую вы не можете назвать методом newInstance() для класса представления. К счастью, вам не нужен экземпляр класса, так как метод render() можно назвать статическим. Просто передайте значение null методу invoke().

  • 0
    Спасибо большое, понял :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню