アクションApplication.show(tag: String)
があり、対応するルーティングエントリがある場合は、手動でURLを作成せずにこのアクションへのリンクをテンプレートに挿入できますか?Playフレームワーク2.0テンプレートのコントローラーアクションへのリンクの挿入方法
私はmagiclink(Application.show("tag"))
のようなことをしたいと思います。
アクションApplication.show(tag: String)
があり、対応するルーティングエントリがある場合は、手動でURLを作成せずにこのアクションへのリンクをテンプレートに挿入できますか?Playフレームワーク2.0テンプレートのコントローラーアクションへのリンクの挿入方法
私はmagiclink(Application.show("tag"))
のようなことをしたいと思います。
構文:あなたも、あなたのコントローラ内の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"));
}
ああ、簡単なように@{routes.Application.show("tag")}
です。
あなたのhtmlであなたのroutes
ファイルからURLを置くためのフォーマットは以下の通りです:
@routes.NameOfYourClass.nameOfyourMethod()
だから、あなたのroutes
ファイルであれば、あなたが持っている:
GET /products controllers.Products.index()
Products
クラスは次のようになります。
<a href="@routes.Products.index()">Products</a>
:
あなた<a>
は次のようになります。index("Hi")
:あなたのメソッドはパラメータを受け入れることができれば、あなたはもちろん、このようなあなたの方法の括弧の間にそれらを渡すことができます。
私はこの回答がより分かりやすいことを願っています。
受け入れ答えは正しいですが、それはすなわち、コントローラは、サブパッケージに含まれている場合は、カバーしていない:私は答えを見つけるのに苦労していたので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
アノテーションを既に提供していたとすれば、これは実際には非常に奇妙なエラーのように思えます。プロジェクトを正しく構築しているかどうか疑問に思うかもしれません。本当の原因を特定することは、あなたを血と宝に費やすことになります。
コントローラがサブパッケージの場合はどうなりますか?それが 'com.mycompany.myproduct.controllers.LoginController.index()'にあるとしましょう – Zennichimaro