In meiner Anwendung habe ich eine Menge Code wie folgt:
%Vor%Ich bin kein Fan dieser Vervielfältigung, also würde ich es gerne umgestalten. Ich hatte gehofft, dass Grails so etwas wie das Folgende haben würde:
%Vor%Oder
%Vor%Dies würde den Befehl autovalidieren und im Falle eines Fehlers zu einem GSP umleiten. Ich habe versucht, so etwas mit Interceptors und Filtern zu erstellen, aber ich habe versagt, da ich keinen Zugriff auf die Aktion und den Befehl im Filter bekomme.
Vielleicht verpasse ich etwas, aber gibt es einen besseren Weg, damit umzugehen, oder etwas Ähnliches zu implementieren?
Unter Berücksichtigung der Kommentare in der Frage habe ich einen temporären Workaround gefunden.
Ein Befehl wie:
%Vor% Und ein Controller mit der Aktion index
, der nur dann ausgeführt wird, wenn params das Befehlsobjekt und die Aktion error
im Falle von Validierungsfehlern umleiten:
Dann können Sie einen Filter für alle Anfragen (oder diejenigen, die Sie wollen) definieren und entsprechend dem Controller und der Aktion, die die Anfrage versucht zu gehen, können Sie das Befehlsobjekt mit den gewünschten Parametern wie folgt validieren:
%Vor%Dieser Code kann auf viele Arten verbessert werden. Aber ich denke, es ist genug als Beispiellösung.
Obwohl nicht genau das, wonach du gefragt hast, habe ich ein Plugin geschrieben, das etwas Ähnliches macht. Es verwendet und AST, um einen Handler hinzuzufügen, es erweitert auch die Controller mit einem Standardhandler, wenn keiner bereitgestellt wird. Allerdings erhält der Handler nur Befehlsobjekte, die Command als letzten Teil seines Namens haben, da das Plugin versucht, dem Befehlsobjekt mehr Konvention zu geben.