【问题标题】:How to do routing in Play framework?如何在 Play 框架中进行路由?
【发布时间】:2015-12-22 05:04:42
【问题描述】:

我是Play Framework 的新手,并试图在Intellij 中设置一个非常小的项目。所以,我遵循了一些基本步骤:

  1. 在 Intellij 中创建一个新项目
  2. 用 play framework 运行它就可以了 (localhost:9000)
  3. 现在我在 Controller 包中添加了一个新的Java 类文件。
  4. config/routes文件中添加路由配置。

TestController.java

public class TestController extends Controller {

public F.Promise<Result> createTest() {
    return F.Promise.promise(() -> TestEndpoints.createTest(Json.fromJson(request().body().asJson(),
            Test.class))).map((result) -> ok(Json.toJson(result)));
}

路线

POST    /Test    controllers.TestController.createTest()

当我运行项目时,我得到了这个错误:

value createTest is not a member of object controllers.TestController

为什么会这样。我刚刚注意到我的控制器文件夹有Application.scala 而不是Application.java。我在这里做错了什么?

【问题讨论】:

  • 你用的是哪个播放版本?

标签: java intellij-idea playframework playframework-2.0


【解决方案1】:

Play 切换到使用依赖注入,因此在 Controller 中引用函数的方法是:

POST /Test @controllers.TestController.createTest()

注意“@”

【讨论】:

  • 好的。它有效,但为什么此路由有效# Home page GET / controllers.Application.index()
  • 所以如果你将Controller声明为一个类,那么它需要被注入来创建一个新的实例。但是,如果您将 Controller 声明为对象,则它已经有一个实例,并且不需要注入。话虽如此,Play 已经朝着依赖注入的方向发展,所以你应该尝试使用它并避免全局状态。
猜你喜欢
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多