2015-12-21 61 views
1

我是Play Framework的新手,試圖在Intellij中設置一個非常小的項目。於是,我跟着一些基本的步驟:如何在Play框架中進行路由?

  1. 中的IntelliJ
  2. 運行它發揮框架創建一個新的項目和它的作品(本地主機:9000)
  3. 現在我已經在控制器中添加一個新的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 

這究竟是爲什麼。有一件事我只注意到我的Controller文件夾有Application.scala而不是Application.java。我在這裏做錯了什麼?

+0

你使用哪個播放版本? – semperfids

+0

這是播放2版本 –

回答

0

播放切換到使用依賴注入和因此的方式在控制器來引用一個功能是:

POST /測試@ controllers.TestController.createTest()

通知的 '@'

+0

好的。它工作,但爲什麼這個路由工作##主頁 GET/controllers.Application.index()' –

+0

所以,如果你聲明控制器爲一個類,那麼它需要注入來創建一個新的實例。但是,如果將Controller聲明爲對象,那麼它已經有一個實例,並且不需要注入。這就是說,Play已經向依賴注入方向發展,所以你應該嘗試使用它並避免全局狀態。 – toidiu