2012-03-31 17 views
5

Come posso chiamare un metodo in una delle mie classi controller senza Grail che tenta di generare una vista?Come chiamare un'azione senza generare una vista in grails

+0

da dove chiami e cosa stai cercando di fare –

+0

Un'azione in un controller deve sempre inviare qualcosa di nuovo all'utente. Ma non deve necessariamente essere una pagina GSP, o HTML, puoi costruire tu stesso una risposta di qualsiasi tipo. Come suggerisce Nate, dobbiamo sapere cosa vuoi ottenere per essere in grado di aiutarti a trovare una soluzione. – David

+1

hai provato a 'rendering'? – neodevelop

risposta

4

È possibile redirect un'altra azione del controllore.

class PuppyController { 

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

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

} 

Ad un certo punto si può sia scrivere la risposta o reindirizzare ad un metodo/chiusura che corrisponde ad una vista così l'utente può ricevere l'output.

Se il metodo che si sta tentando di chiamare è su un altro controller, è probabile che lo stia sbagliando.

Se, ad esempio, ho un metodo controller che carica un file e un altro metodo che crea il nome file per quel file come una combinazione di alcune convenzioni che compongo (ad esempio timestamp + "bel file per" + username) su un altro controller, è necessario promuovere tale metodo di controllo su Service e iniettarlo in entrambi i controller.

2
class FooController { 

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

} 
0

In sostanza è possibile creare un'istanza del controller (tramite "nuova" parola chiave) e quindi chiamare l'azione di interesse. Si prega di fornire maggiori dettagli su cosa si vuole fare, quindi potrei essere in grado di dare una risposta migliore ...

Problemi correlati