2012-06-22 9 views
16

Me gustaría obtener la URL absoluta de un controlador en Play 2 Java. Encontré el exact same question for Scala, pero no puedo hacerlo funcionar en Java.¿Cómo revertir la generación de una URL absoluta desde una ruta en 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(); 
    } 
} 

Gracias por su ayuda!

Respuesta

25

Añadir solicitud a absoluteURL()

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

Solo una nota: esto funciona porque absoluteURL usa el objeto Request para encontrar el dominio. –

+0

pero eso no funciona en Play 2.2 para Scala. –

2

No estoy seguro de si esto funciona en 2.0, pero ya que está utilizando Java podría hacer el truco. Lo uso en 1.2.4.

Router.getFullUrl("Controller.action") 

¡Buena suerte!

Editar: Importar play.mvc.Router por lo que si esto no existe en 2.0 puede encontrar algo similar.

Además, esta es la documentación 2.0 de play en enrutamiento, revise el enrutamiento inverso, quizás ayude.

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

+0

Lo intenté, pero 'getFullUrl' no existe en 2,0 parecer:/ –

+0

Es una pena, que era bastante útil. De lo que leo de la documentación, cada vez que se usa un controlador en las rutas conf, genera un controlador inverso. Se parece a esto 'controllers.routes.Controller.action (args)'. Edité mi respuesta con el enlace a la documentación. – Alex

+0

+1 para la referencia 1.2.4 –

Cuestiones relacionadas