actionApplication.show(tag: String)
があり、対応するルーティング エントリもある場合、手動で URL を作成せずに、このアクションへのリンクをテンプレートに挿入するにはどうすればよいですか?
のようなことをしたいと思いmagiclink(Application.show("tag"))
ます。
actionApplication.show(tag: String)
があり、対応するルーティング エントリもある場合、手動で URL を作成せずに、このアクションへのリンクをテンプレートに挿入するにはどうすればよいですか?
のようなことをしたいと思いmagiclink(Application.show("tag"))
ます。
構文:
<a href='@routes.Application.show("some")'>My link with some string</a>
同様に、コントローラーで URL を生成することもできます。すなわち。何らかのアクションの後にリダイレクトする場合:
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")}
です。
受け入れられた答えは正しいですが、コントローラーがサブパッケージにある場合はカバーされていません。controllers.applications.MyFavouriteApplication.show()
答えを見つけるのに苦労したので、ここに投稿します。
範囲指定されていないリンクをテンプレートに入れるための適切なパターンは次のとおりです。@controllers.{sub-packages if any}.routes.{your class}.{your method}()
したがって、この場合は次のようになります@controllers.applications.routes.MyFavouriteApplication.show()
@Inject
シングルトン コントローラー オブジェクトを作成するために を使用する推奨される Play パターンを使用していて、正しい答えが@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
注釈を提供していることを考えると、これは非常に奇妙なエラーのように思えます。プロジェクトを正しくビルドしているかどうか疑問に思うかもしれません。真の原因を特定するには、かなりの血と財宝が必要になる可能性があります。