我有一个配置文件,我想从中读取视图的名称,然后渲染视图。我正在尝试使用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()方法。