2012-09-25 3 views
21

Attualmente sto ricevendo un percorso URL relativo come String tramite:Come ottenere l'URL del percorso assoluto come String In Play framework 2?

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

Questo funziona bene però mi piacerebbe ottenere la piena URL assoluto. Sono sicuro che questo è semplice, proprio non riesco a trovarlo.

In alternativa, come è possibile ottenere il dominio corrente in una vista da aggiungere all'URL relativo?

risposta

22

in effetti è semplice ed è stato anche risposto sulla pila

Seguire questa domanda: How to reverse generate an absolute URL from a route on Play 2 Java?

In molto generale è necessario:

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

Grazie Biesior. Ho cercato lo Stack ma ... il mio cervello deve essere stato un po 'abbattuto! Questo ha fatto il trucco. Grazie per aver dedicato del tempo a una domanda così semplice! – afxdesign

+1

Ecco cos'è Stack Overflow per :) Non ti preoccupare, la prossima volta lo troverai :) – biesior

8

Per programmatore Scala: in Play 2.2. x absoluteURL è sovraccaricato in questo modo:

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

Quindi, se si scrive solo

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

si otterrà un errore:

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

ci sono due opzioni. O si dichiara la richiesta come implicita:

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

e sbarazzarsi dei parametri del tutto (lo si può fare, perché l'altro ha un valore di default):

routes.MyController.myMethod().absoluteURL() 

o si deve specificare sia parametri esplicitamente.

Sto scrivendo questa risposta qui, perché la domanda è "Come ottenere url percorso assoluto come String In Play framework 2" e la risposta accettata è solo per Java. La versione di Scala ha le sue sfumature.