2012-04-04 28 views
13

Estoy intentando descubrir cómo hacer una redirección dentro de una acción de controlador en Play (2.0) usando Scala.Play Framework - Redirigir con los parámetros

La redirección utilizando

Redirect(routes.Application.index) 

funciona bien.

Lo que no puedo deducir de los documentos, API o Google es cómo agregar parámetros a la llamada.

vengo Griales donde esto se podría hacer fácilmente de la siguiente manera:

acción de redirección: "índice", params: [ "clave": "valor"] .

La única forma que he encontrado es llamar a Redirect utilizando una url de cadena y una cadena de consulta, lo que parece incómodo.

Básicamente, me gustaría hacer uso de redirigir (llamar) de alguna manera, pero no sé cómo crear el objeto de llamada utilizando el enrutamiento inverso.

¿Me está faltando algo/no entendí el concepto en Play/Scala?

¡Gracias de antemano!

Respuesta

15

Ellou'

Una ruta es sólo una función, por lo que puede pasar argumentos como de costumbre:

// Redirect to /hello/Bob 
def helloBob = Action { 
    Redirect(routes.Application.hello("Bob"))  
} 

Este fragmento proviene de http://www.playframework.org/documentation/2.0/ScalaRouting (en la parte inferior)

+0

Gracias! En realidad, intenté esto en primer lugar, pero el compilador se quejó, que ingresé demasiados argumentos. El problema fue: la acción requiere un Largo, pero en el Enrutamiento que definí, debe haber un valor predeterminado para la acción. Tuve que eliminar eso. Así que ahora necesito llamar al índice (Ninguno) o al índice (Algunos (foo)). Viniendo de Grails, esto parece muy tedioso. – pchronz

+3

+1 De esto se tratan las URL de tipo seguro. Ojalá el juego los venda más por lo que son. –

+1

+1 también para tipo seguro, @DanBurton, gracias por las ediciones – biesior

0

También puede evitar creando otra función solo para esto en su controlador. En su configuración de ruta, simplemente puede agregar algo como esto:

GET /google @controllers.Default.redirect(to = "http://google.com") 
+0

@zenith: espero que ayude –

+0

Muuuuch mejor! – emlai

+0

Esto no parece funcionar. Me sale 'No such file or directory' –