2012-06-22 3 views
16

Ich möchte die absolute URL von einem Controller in Play 2 Java erhalten. Ich habe die exact same question for Scala gefunden, aber ich kann es nicht in Java arbeiten lassen.Wie kann eine absolute URL von einer Route auf Play 2 Java umgekehrt werden?

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(); 
    } 
} 

Vielen Dank für Ihre Hilfe!

Antwort

25

hinzufügen Anfrage absoluteURL()

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

Nur eine Anmerkung: Dies funktioniert, weil absoluteURL Request-Objekt verwendet, um die Domäne zu finden. –

+0

, aber das funktioniert nicht in Play 2.2 für Scala. –

2

Ich bin nicht sicher, ob dies in 2.0 funktioniert, aber da Sie Java verwenden, könnte es den Trick tun. Ich benutze es in 1.2.4.

Router.getFullUrl("Controller.action") 

Viel Glück!

Edit: Ich importiere play.mvc.Router also, wenn dies nicht in 2.0 existiert, könnten Sie etwas Ähnliches finden.

Auch dies ist Play 2.0 Dokumentation über Routing, überprüfen Sie Reverse Routing, vielleicht wird es helfen.

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

+0

Ich habe versucht, aber 'getFullUrl' existiert nicht in 2.0 offenbar:/ –

+0

Schade, das war ziemlich nützlich. Aus dem, was ich in der Dokumentation gelesen habe, wird jedes Mal, wenn ein Controller in den Routen conf verwendet wird, ein Reverse-Controller generiert. Es sieht wie folgt aus: 'controllers.routes.Controller.action (args)'. Ich habe meine Antwort mit dem Link zur Dokumentation bearbeitet. – Alex

+0

+1 für die 1.2.4-Referenz –