동적 모듈 라우팅을 시도하기 때문에 global.java 클래스의 문자열 객체에서 경로 객체를 검색하는 방법을 알고 싶습니다. 내 주요 노선 내가java play framework 2.1.3 경로 객체 검색 방법
로 모듈 (하위 프로젝트)을 추가 할 때마다 편집 ->/인 MyModule의 mymodule.Routes
을 따라서이를 방지하기 위해, 내가 대상 경로가의 따라로드 트링 해요 URI 경로. /모듈/인 MyModule
나는, 어떤 제안을 onRouteRequest()
Class.forName("mymodule.Routes").routes.lift(request);
내부에 따라야하지만 실패로 코드를 작성하는 tryed?
편집 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);
}
}
올바른 경로를 찾았지만 인스턴스 예외가 발생했습니다.
'newInstance()'호출은 여기서 실패한 것으로 보입니다. 라우터에 매개 변수없는 공용 생성자가 있습니까? – Kapep
문제는 @kapep이 언급 한 것입니다. 'Routes' 클래스는 기본 생성자를 가지고 있지 않습니다. 정적 메서드가 많습니다. 유망 해 보였던'handlerFor'라는 것이 있지만'onRouteRequest' 메소드로 전달되는 자바 버전'play.mvc.Http.RequestHeader'가 아니라'play.api.mvc.RequestHeader' 객체를 필요로합니다. – estmatic
사실상 정적 인 방법으로 경로를 반영했지만 이러한 문제점을 발견했습니다. 그래서 대체 솔루션? – user2054758