いいえ、Javaの逆ルート引数またはビュー引数では不可能です。コントローラーでデフォルト値を指定する必要があります。
return redirect(routes.Application.page_view("main", "home", true));
一方、Scala駆動型ビューでは、必要に応じてそれを行うことができます。比較してください。
<pre>
@(routes.Application.page_view("one", "two"))
@(routes.Application.page_view("three", "four", true))
@(routes.Application.page_view("five", "six", false))
</pre>
編集
あなたが自分自身を指摘したように、あなたのアクションをオーバーロードすることも可能です(しかし、ルートリゾルバーに関しては、他の名前を使用する必要があるので、sensu strictoをオーバーロードしないことに注意してください):
routes
:
GET /:namespace/:name controllers.Application.pageViewDefault(namespace: String, name: String)
GET /:namespace/:name controllers.Application.pageView(namespace: String, name: String, redirect: Boolean ?= true)
Controller
:
public static Result pageViewDefault(String namespace, String name) {
return pageView(namespace, name, true);
}
public static Result pageView(String namespace, String name, boolean redirect) {
if (redirect) //return some redirect...
// in other case return a Result...
}
とにかく、私の経験から言えば、長時間実行すると不快になるでしょう。毎回(コントローラーとビューの両方で)、現時点でpageView
またはを選択する必要があるかどうかを覚えておく必要がありますpageViewDefault
。私見では、単一のアクションを使用し、必要に応じてデフォルトのリダイレクトを追加することを忘れないでくださいpageView(ns, n, true)
-vs pageView(ns, n, false)
。
また、あなたのアプローチ*Default
では、ビュー内のアクションについて覚えておく必要がありますが、単一のアクションでは、次のことはしません。
<pre>
@(routes.Application.pageViewDefault("one", "two"))
@(routes.Application.pageView("three", "four", false))
vs.
@(routes.Application.pageView("one", "two"))
@(routes.Application.pageView("three", "four", false))
</pre>
生活を簡素化するには、コントローラーで定数を宣言するだけです。
private static final boolean DEFAULT_REDIRECT = true;
したがって、後でデフォルトルートに使用できます。
return redirect(routes.Application.pageView( "main"、 "home"、DEFAULT_REDIRECT));
また、それぞれにオプションの引数を持つ多くのアクションがある場合は、アクション+専用ルートredirect
を作成する必要があります。*Default