我想知道如何从 global.java 类中的字符串中检索路由对象,因为我试图进行动态模块路由:我不想在每次添加模块时编辑我的主路由(子项目)作为
-> /mymodule mymodule.Routes
所以为了避免这种情况,我试图根据 URI 路径加载目标路由。/模块/我的模块
我尝试在 onRouteRequest() 中编写如下代码
Class.forName("mymodule.Routes").routes.lift(request);
但它失败了,有什么建议吗?
编辑1:在第1场比赛中可能是这样的:
/{controller}/{action} {controller}.{action}
但是在play2中似乎也不起作用
编辑 2:我当前的 Global.java 是
import play.GlobalSettings;
import play.Play;
import play.api.mvc.Handler;
import play.mvc.Http;
public class Global extends GlobalSettings
{
@Override
public Handler onRouteRequest(Http.RequestHeader request)
{
String path = request.path();
if (path.startsWith("/module/"))
{
String[] paths = path.split("/");
String router = paths[2];
try
{
return (Handler) Class.forName(router + ".Routes", true, Play.application().classloader()).newInstance();
}
catch (InstantiationException | IllegalAccessException | ClassNotFoundException e)
{
e.printStackTrace();
}
}
return super.onRouteRequest(request);
}
}
他找到了正确的路线,但引发了 Instantation Exception