2012-03-31 2 views
5

Wie kann ich eine Methode in einer meiner Controller-Klassen aufrufen, ohne dass Grails versucht, eine Ansicht zu generieren?So rufen Sie eine Aktion auf, ohne eine Ansicht in Grails zu generieren

+0

wo rufst du an und was willst du tun –

+0

Eine Aktion in einem Controller muss immer senden etwas zurück zum Benutzer. Es muss jedoch keine GSP-Seite oder HTML sein, Sie können eine Antwort beliebigen Typs selbst erstellen. Wie wir bereits angedeutet haben, müssen wir wissen, was Sie erreichen wollen, um Ihnen zu helfen, eine Lösung zu finden. – David

+1

haben Sie versucht, 'render'? – neodevelop

Antwort

4

Sie können redirect zu einer anderen Controller-Aktion.

class PuppyController { 

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

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

} 

Irgendwann Sie entweder auf die Antwort schreiben sollte oder sich auf ein Verfahren/Schließung umleiten, die zu einer Ansicht entspricht, damit der Benutzer die Ausgabe empfangen kann.

Wenn die Methode, die Sie anrufen möchten, sich auf einem anderen Controller befindet, besteht die Gefahr, dass Sie sich nicht anmelden.

Wenn ich zum Beispiel eine Controller-Methode habe, die eine Datei hochlädt, und eine andere Methode, die den Dateinamen für diese Datei als eine Kombination einiger Konventionen erstellt (z. B. Zeitstempel + "hübsche Datei für" + Benutzername) Auf einem anderen Controller sollten Sie diese Controller-Methode auf Service heraufstufen und in beide Controller einspeisen.

2
class FooController { 

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

} 
0

Im Wesentlichen können Sie eine Controller-Instanz erstellen (über 'neues' Schlüsselwort) und dann die gewünschte Aktion aufrufen. Bitte geben Sie weitere Details über das, was Sie tun möchten, so kann ich eine bessere Antwort geben ...

Verwandte Themen