2012-06-22 4 views
16

Mi piacerebbe ottenere l'URL assoluto da un controller in Play 2 Java. Ho trovato il exact same question for Scala, ma non riesco a farlo funzionare in Java.Come invertire generare un URL assoluto da una rotta su Play 2 Java?

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

Grazie per il vostro aiuto!

risposta

25

Aggiungi richiesta di absoluteURL()

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

Solo una nota: questo funziona perché absoluteURL utilizza l'oggetto Request per trovare il dominio. –

+0

ma ciò non funziona in Play 2.2 per Scala. –

2

Non sono sicuro se questo funziona in 2.0, ma dal momento che stai usando Java potrebbe fare il trucco. Lo uso in 1.2.4.

Router.getFullUrl("Controller.action") 

Buona fortuna!

Modifica: Importa play.mvc.Router quindi se questo non esiste in 2.0 potresti trovare qualcosa di simile.

Inoltre, questa è la documentazione di gioco 2.0 sul routing, verificare il percorso inverso, forse sarà d'aiuto.

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

+0

Ho provato, ma 'getFullUrl' non esiste in 2,0 a quanto pare:/ –

+0

Peccato, che è stato molto utile. Da quanto ho letto dalla documentazione, ogni volta che viene utilizzato un controller nel percorso conf, genera un controller inverso. Sembra come questo 'controllerers.routes.Controller.action (args)'. Ho modificato la mia risposta con il link alla documentazione. – Alex

+0

+1 per il riferimento 1.2.4 –