2012-09-16 11 views

答えて

16

構文:あなたも、あなたのコントローラ内のURLを生成することができます類推

<a href='@routes.Application.show("some")'>My link with some string</a> 

。すなわち、いくつかのアクションの後にリダイレクトする:

public static Result justRedirect(){ 

    // use as String 
    String urlOfShow = routes.Application.index().toString(). 

    // or pass as a redirect() arg 
    return redirect(routes.Application.show("some")); 
} 
3

ああ、簡単なように@{routes.Application.show("tag")}です。

4

あなたのhtmlであなたのroutesファイルからURLを置くためのフォーマットは以下の通りです:

@routes.NameOfYourClass.nameOfyourMethod() 

だから、あなたのroutesファイルであれば、あなたが持っている:

GET  /products     controllers.Products.index() 

Productsクラスは次のようになります。

さらにて

<a href="@routes.Products.index()">Products</a> 

あなた<a>は次のようになります。index("Hi"):あなたのメソッドはパラメータを受け入れることができれば、あなたはもちろん、このようなあなたの方法の括弧の間にそれらを渡すことができます。

私はこの回答がより分かりやすいことを願っています。

+2

コントローラがサブパッケージの場合はどうなりますか?それが 'com.mycompany.myproduct.controllers.LoginController.index()'にあるとしましょう – Zennichimaro

1

受け入れ答えは正しいですが、それはすなわち、コントローラは、サブパッケージに含まれている場合は、カバーしていない:私は答えを見つけるのに苦労していたのでcontrollers.applications.MyFavouriteApplication.show()

が、私はそれを投稿しますここに。テンプレートに非スコープのリンクを置くことを

、適切なパターンは、あなたがシングルトンを作成するために@Injectを使用しての推奨プレイパターンを使用していたのであれば、この場合には、それは@controllers.applications.routes.MyFavouriteApplication.show()

だろう@controllers.{sub-packages if any}.routes.{your class}.{your method}()

ですコントローラオブジェクト、およびあなたは正しい答えは@controllers.applications.MyFavouriteApplication.show()だと思った場合は、このようなエラーが出るでしょう:

Object MyFavouriteApplication is not a member of controllers.applications. Note: class MyFavouriteApplication exists, but it has no companion object.

@Inject()@Singletonアノテーションを既に提供していたとすれば、これは実際には非常に奇妙なエラーのように思えます。プロジェクトを正しく構築しているかどうか疑問に思うかもしれません。本当の原因を特定することは、あなたを血と宝に費やすことになります。

関連する問題