2012-03-31 22 views
5

¿Cómo puedo llamar a un método en una de mis clases de controlador sin que Grails intente generar una vista?Cómo llamar una acción sin generar una vista en grails

+0

¿A dónde llama y qué intenta hacer? –

+0

Una acción en un controlador siempre tiene que enviar algo devuelto al usuario. Pero no tiene que ser una página GSP, o HTML en absoluto, puede construir una respuesta de cualquier tipo usted mismo. Como Nate sugiere, necesitamos saber qué es lo que quiere lograr para poder ayudarlo a encontrar una solución. – David

+1

¿has probado 'render'? – neodevelop

Respuesta

4

Puede redirect a otra acción del controlador.

class PuppyController { 

    def woof() { 
    redirect(action:'bark') 
    } 

    def bark(){ 
    response.write "Moo" 
    } 

} 

En algún momento, ya sea que debe escribir en la respuesta o redirigir a un método/cierre que corresponde a una vista por lo que el usuario puede recibir la salida.

Si el método que está tratando de llamar está en otro controlador, es probable que YOAR LO HAGA EQUIVOCADO.

Si, por ejemplo, tengo un método de controlador que carga un archivo, y otro método que crea el nombre de ese archivo como una combinación de alguna convención que invente (digamos timestamp + "archivo bonito para" + nombre de usuario) en otro controlador, debe promocionar ese método de controlador a Service e inyectarlo en ambos controladores.

2
class FooController { 

    def fooAction() { 
    render("Successful call to fooAction") 
    } 

} 
0

Esencialmente puede crear una instancia de controlador (mediante la palabra clave 'nueva') y luego llamar a la acción de su interés. Proporcione más detalles sobre lo que desea hacer, por lo que podría darle una mejor respuesta ...

Cuestiones relacionadas