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
risposta
È 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.
class FooController {
def fooAction() {
render("Successful call to fooAction")
}
}
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 ...
da dove chiami e cosa stai cercando di fare –
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
hai provato a 'rendering'? – neodevelop