2017-01-27 3 views
2

私は単純な新しいコントローラを作成し、ルートを定義しようとしました。すべてが正しいようですが、私はエラーが発生します。コードはManning Play for Javaから取得したものです。ルート定義エラー

製品コントローラ:

package controllers; 

import play.mvc.*; 
import play.mvc.Controller; 
import play.mvc.Result; 

public class Products extends Controller { 

//list all products 
public static Result list(){ 
    return TODO; 
} 

//return empty form for adding 
public static Result newProduct(){ 
    return TODO; 
} 

//product edit form 
public static Result details(String ean){ 
    return TODO; 
} 

//save a product 
public static Result save(){ 
    return TODO; 
} 

} 

ルート:

GET /       controllers.HomeController.index 

GET  /count      controllers.CountController.count 

GET  /message     controllers.AsyncController.message 


GET  /assets/*file    controllers.Assets.versioned(path="/public", file: Asset) 

GET  /products     controllers.Products.list 
GET  /products/new    controllers.Products.newProduct 
GET  /products/:ean    controllers.Products.details(ean: String) 
POST /products/     controllers.Products.save 

エラー:バージョン2.5以降

Compiling 6 Scala sources and 11 Java sources to /Users/andrei/Desktop/PlayFramework/target/scala-2.11/classes... 
[error] /Users/andrei/Desktop/PlayFramework/conf/routes:15: value list is not a member of controllers.Products 
[error] GET  /products     controllers.Products.list 
[error] /Users/andrei/Desktop/PlayFramework/conf/routes:16: value newProduct is not a member of controllers.Products 
[error] GET  /products/new    controllers.Products.newProduct 
[error] /Users/andrei/Desktop/PlayFramework/conf/routes:17: value details is not a member of controllers.Products 
[error] GET  /products/:ean    controllers.Products.details(ean: String) 
[error] /Users/andrei/Desktop/PlayFramework/conf/routes:18: value save is not a member of controllers.Products 
[error] POST /products/     controllers.Products.save 
[error] four errors found 
+0

'return TODO'の代わりに 'return ok()'を使用してください。 –

+0

@AsadSarwar、TODOはここでは問題ありません – Mysterion

答えて

1

、プレイはstaticコントローラメソッドを禁止しますInjectedRoutesGeneratorを、使用を開始します。だから、簡単な解決策は、staticキーワードを削除することです。

しかし、あなたは本当に(私はなぜ表示されない)静的メソッドを持つようにしたい場合は、あなたの可能性すべてのアクションがstatic 方法

であることを前提としていたユーザレガシー(事前2.5.0) staticルートジェネレータ、

従来の(2.5.0より前の)スタティックルート ジェネレータを使用するようにPlayを設定することができます。これは、すべてのアクションが静的メソッドであることを前提としています。 プロジェクトを設定するには、以下をbuild.sbtに追加してください。

routesGenerator:= StaticRoutesGenerator 注入経路ジェネレータを常に使用することをおすすめします。スタティックルートジェネレータは、既存のプロジェクトが のすべてのコントローラを一度に静的にする必要がないように、移行を支援するツールとして主に が存在します。

スタティックルートジェネレータを使用している場合は、アクション がそうのように、@でアクションを付けることによって注入されたコントローラを持っていることを示すことができます:

GET/controllers.Application.index @いくつかの/パス()

+0

ありがとうございます。これは助けになった! –

関連する問題