使用java中的反射在Play中动态加载视图类



我有一个配置文件,我想从中读取视图的名称,然后渲染视图。我正在尝试使用java反射,代码看起来像:

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

我得到的是Java.lang.ClassNotFoundException。viewName是视图的名称。

您没有公布如何获得类名,所以我在本例中为索引视图提供了一个完整的示例。

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()方法。

相关内容

  • 没有找到相关文章

最新更新