routesから絶対URLを取得する

routesから絶対URLを取得したい。
ここでいうroutesconfディレクトリ内のroutesではなく、コンパイル時に生成されるroutesパッケージのことを指す。

通常コントローラーでリダイレクトをする際は、

return redirect(routes.IndexController.index());

のようにCall型オブジェクトを引数として渡すことが多いが、Call#url()メソッドは相対URLを返すメソッドとなっている。

// 相対URLを取得
routes.IndexController.index().url();

絶対URLを取得するには、request()と組み合わせて以下のようにすれば良い。

// 絶対URLを取得
routes.IndexController.index().absoluteURL(request());

コントローラーからも、scala templateからも、どちらも同じように使用できる。