我正在使用播放2.2.3版本。我有2个控制器,当我试图从一个控制器调用一个方法(带动作组合)时,没有调用动作类。
Controller1.java
@CustomAction(actionName="myAction")
public static Result getData()
{
System.out.println("From Controller 1");
return ok("From Controller 1");
}
Controller2.java
public static Result index()
{
System.out.println("From Controller 2");
Result result = Controller1.getData();
String s =new String(JavaResultExtractor.getBody((SimpleResult) result));
return ok(index.render(s));
}
路由
GET /view controllers.Controller2.index()
GET /getData controllers.Controller1.getData()
当我调用http://localhost:9000/getData
时,动作类被成功调用。
但是当我调用http://localhost:9000/view
时,没有调用动作类。
我不确定从另一个控制器调用控制器方法的正确方法是什么。 任何有关这方面的帮助都会非常有用。
提前致谢
答案 0 :(得分:0)
通过直接调用Controller1.getData()
,您将绕过Play完成的任何请求处理。即您只是在Play代码的上下文之外的Java类上调用静态方法。
目前还不清楚你最终要从你的示例代码中完成什么,所以只能建议你:
@CustomAction
添加到Controller2.index()
(如果适用)Result
)Controller1.getData()
重定向到Controller2.index()
(例如:return redirect(routes.Controller1.getData());
)