2012-06-22 9 views
16

Play 2 Javaのコントローラから絶対URLを取得したいとします。 exact same question for Scalaが見つかりましたが、Javaで動作させることはできません。Play 2 Javaのルートから絶対URLを生成するにはどうすればよいですか?

public class MyController extends Controller { 
    public static Result myMethod() { 
     return ok(); 
    } 

    public static Result test() { 
     Logger.info(routes.MyController.myMethod().url); // Doesn't work ! 
     Logger.info(routes.MyController.myMethod().absoluteURL()); // Doesn't work ! 
     Logger.info(routes.MyController.myMethod().absoluteURL(true)); // Doesn't work ! 
     return ok(); 
    } 
} 

ありがとうございました!

答えて

25

getFullUrl`は明らかに2.0に存在しない `私が試したabsoluteURL()

routes.MyController.myMethod().absoluteURL(request()); 
+5

ちょうど注記:これは、absoluteURLがドメインを見つけるためにリクエストオブジェクトを使用するため、これが機能します。 –

+0

しかし、それはPlay 2.2 for Scalaでは機能しません。 –

2

2.0で動作するかどうかはわかりませんが、Javaを使用しているので、このトリックを行う可能性があります。私は1.2.4でそれを使用します。

Router.getFullUrl("Controller.action") 

幸運!

編集:私はplay.mvc.Routerをインポートします。これが2.0に存在しない場合は、似たようなものが見つかるかもしれません。

また、これはルーティングに関する遊びの2.0ドキュメントです。逆ルーティングを確認してください。多分役立つかもしれません。

http://www.playframework.org/documentation/2.0.1/JavaRouting

+0

に要求を追加しますが:/ –

+0

があまりにも悪い、それはかなり有用でした。私がドキュメンテーションから読んだところから、コントローラがルートconf内で使用されるたびに、それはリバースコントローラを生成します。これは 'controllers.routes.Controller.action(args)'のように見えます。私はドキュメントへのリンクで私の答えを編集しました。 – Alex

+0

+1 1.2.4リファレンスの場合 –

関連する問題