Frage

Wenn ich in der Spring Source Tool Suite IDE oder im Eclipse Maven-Projekt sehen möchte, was eine Framework-/Bibliotheksmethode hinter den Kulissen tut, drücke ich normalerweise die Strg-Taste und klicke auf den Methodennamen, um zum Quellcode zu gelangen.Ich verstehe, dass viele Grails-Methoden zur Laufzeit dynamisch hinzugefügt werden, sodass die IDE nicht immer weiß, wie sie darauf zugreifen kann.Ansonsten kann ich die Klasse nach Paket auf Google, Github oder in der API-Dokumentation suchen.Was ist der beste Weg, dies mit der Grails-Kernquelle zu tun, um das Framework besser zu verstehen?

Ich möchte zum Beispiel sehen, wie die Antwortmethode in einem Controller aussieht und wie sie einen Parameter namens „clubInstanceList“ an meinen Club/Index-GSP zurückgibt, wenn die Indexmethode so aussieht:

def index(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    respond clubService.list(params), model:[clubInstanceCount: clubService.count()]
}

Strg + Klick funktioniert in der IDE nicht, da diese Methode zur Laufzeit hinzugefügt wird.Ich habe die Grails-Kernquelle auf Github durchsucht, kenne aber die Paketstruktur für diese Antwortmethode auf einem Controller nicht.

War es hilfreich?

Lösung

Dies ist möglicherweise keine triviale Suche, da während der Kompilierungszeit Code generiert wird oder Ihren Klassen zur Laufzeit Funktionen hinzugefügt werden können.Dies ist der Preis, den Sie zahlen, wenn Sie dynamische Sprachen verwenden.

Dynamische Laufzeitmethoden

Wenn ich eine Funktionalität finden muss, die nicht so offensichtlich ist, versuche ich zunächst, das interne Plugin zu finden, das dafür verantwortlich ist.Bei STS tue ich das ctrl shift T und suchen *GrailsPlugin*.Sie können in der nach Laufzeitänderungen suchen doWithDynamicMethods Schließen des Plugins.

Grails haben zum Beispiel das ControllersGrailsPlugin Klasse, die Datenbindungsfunktionen für Ihre Controller-Klassen hinzufügt.

Nach Methoden suchen

Da ich nichts dazu gefunden habe respond Methode in diesem Plugin-Deskriptor, dies wird wahrscheinlich durch Kompilierung erstellt.Du könntest benutzen ctrl H, und führen Sie eine Java-Suche durch, markieren Sie method im Feld „Suchen nach“.Im scope markieren workspace und STS wird auch nach Grails-Klassen suchen.

Die Antwort

Die Antwort auf Ihre Frage lautet also: ControllersRestApi Klasse, und ich habe sie mithilfe des „Suchmethoden“-Ansatzes gefunden.

Andere Tipps

Ich hatte die identische Frage und fand die Antwort von Sergio, um ziemlich hilfreich zu sein, aber hier ist eine andere Methode: Laden Sie den Debugger und den Schritt mit F5.Dies kann jetzt anstrengend sein, es sei denn, Sie aktivieren Step-Filter (siehe GGTS / STS / Eclipse-Hilfe).Insbesondere empfehle ich, zusätzlich zu den vorgewählten Paketen generationstabedagcode zu filtern.Das wird viel von der Reflexion und dynamischen Teile entfernt, die zumindest in solchen Fällen - Sie interessieren sich nicht dafür.

Ich werde auch hinzufügen, dass meine Quest dieses Problem gefunden hat, um die Reaktionsmethode-Dokumentation zu verbessern:

https://jira.grails.org/browse/grails-10721

Wir sind also nicht die einzigen, um unsere Köpfe dazu zu kratzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top