14

actionApplication.show(tag: String)があり、対応するルーティング エントリもある場合、手動で URL を作成せずに、このアクションへのリンクをテンプレートに挿入するにはどうすればよいですか?

のようなことをしたいと思いmagiclink(Application.show("tag"))ます。

4

4 に答える 4

19

構文:

<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"));
}
于 2012-09-16T14:43:52.127 に答える
3

ああ、と同じくらい簡単@{routes.Application.show("tag")}です。

于 2012-09-16T14:17:54.730 に答える
3

受け入れられた答えは正しいですが、コントローラーがサブパッケージにある場合はカバーされていません。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注釈を提供していることを考えると、これは非常に奇妙なエラーのように思えます。プロジェクトを正しくビルドしているかどうか疑問に思うかもしれません。真の原因を特定するには、かなりの血と財宝が必要になる可能性があります。

于 2017-11-27T23:47:15.947 に答える