web-dev-qa-db-ja.com

Play Framework 2で文字列として絶対ルートURLを取得するにはどうすればよいですか?

私は現在、次の方法で相対URLルートを文字列として取得しています。

String url = controllers.directory.routes.Directory.viewOrganisation( org.id ).url();

これは問題なく動作しますが、完全な絶対URLを取得したいと思います。これは簡単だと思いますが、見つけられないようです。

または、ビュー内の現在のドメインを取得して相対URLに追加するにはどうすればよいですか?

23
afxdesign

確かにそれは単純であり、スタックでも回答されました

この質問に従ってください: Play 2 Javaのルートから絶対URLを逆生成する方法は?

一般的に、次のものが必要です。

routes.MyController.myMethod().absoluteURL(request());
24
biesior

Scalaプログラマー:Play 2.2.xでは、absoluteURLは次のようにオーバーロードされます:

def absoluteURL(secure: Boolean = false)(implicit request: RequestHeader): String

だからあなたがただ書くなら

routes.MyController.myMethod().absoluteURL(request)

エラーが発生します:

Overloaded method value [absoluteURL] cannot be applied to (play.api.mvc.Request[play.api.mvc.AnyContent])

2つのオプションがあります。リクエストを暗黙的に宣言します。

def myMethod() = Action { implicit request =>
    ...
}

パラメータを完全に削除します(もう一方にはデフォルト値があるため、実行できます)。

routes.MyController.myMethod().absoluteURL()

または、両方のパラメーターを明示的に指定する必要があります。

質問は「PlayFramework2で文字列として絶対ルートURLを取得する方法」であり、受け入れられる回答はJavaのみです。Scalaバージョンには微妙な違いがあります。

8
kuonirat