繁体   English   中英

在Play框架中的另一个控制器中重用一个控制器的结果

[英]Reusing the Result of a Controller in another Controller in the Play framework

抱歉,如果已经回答-我看了看,什么也找不到。

使用Play框架,我定义了两个控制器-一个是返回JSON的公共API,一个是该API的使用者,该API将JSON呈现为HTML。 例如,我的路线文件如下所示:

GET     /foos       controllers.App.foos() #produces HTML
GET     /api/foos   controllers.API.foos() #produces JSON

该项目的要求是只能通过公共API访问我们的数据。 因此,我想要实现的方法是让App.foos()调用API.foos() ,解析JSON结果,并将其传递给要呈现的模板。 例如:

public App extends Controller {
  public static Result foos() {
    Result result = API.foos();
    // TODO: get the JSON out of the result object
  }
}

谁能告诉我如何从结果对象中提取JSON? 我可以使用((SimpleResult)result.getWrappedResult()).body()作为枚举器获取对象的((SimpleResult)result.getWrappedResult()).body() ,但是我仍然不清楚如何获取JSON。

因为我是Pl​​ay框架的新手,所以也许我正在解决这个错误,并且有更简单/更好的方法来做到这一点?

预先感谢,詹姆斯

最简单的方法是公开基础方法。

public Api extends Controller {

  public static Result foos() {
    Ok(foosJson());
  }

  public static JsValue foosJson() {
    // ...
  }
}

public App extends Controller {

  public static Result foos() {
    JsValue json = API.foosJson();
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM