播放2 - 调用b / w 2控制器方法不会调用操作

时间:2014-10-06 10:59:51

标签: playframework playframework-2.0

我正在使用播放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时,没有调用动作类。

我不确定从另一个控制器调用控制器方法的正确方法是什么。 任何有关这方面的帮助都会非常有用。

提前致谢

1 个答案:

答案 0 :(得分:0)

通过直接调用Controller1.getData(),您将绕过Play完成的任何请求处理。即您只是在Play代码的上下文之外的Java类上调用静态方法。

目前还不清楚你最终要从你的示例代码中完成什么,所以只能建议你:

  • @CustomAction添加到Controller2.index()(如果适用)
  • 将常用功能删除到另一个类中,让两个控制器调用该类(不应该返回Result
  • 或(如果适用)从Controller1.getData()重定向到Controller2.index()(例如:return redirect(routes.Controller1.getData());