Grails JQuery Ajax Formularvalidierung

8

Ich habe einen modalen Dialog, in dem ich ein Formular von einem GSP lade und ich bin dabei, die richtige Lösung für ein AJAX-basiertes Formular mit JSON-Validierung zu finden. Erfolgsmeldung wie eine Flash-Scope-Nachricht:

%Vor%

In dieser Form habe ich folgendes JS:

%Vor%

Ich gebe eine JSON-Antwort zurück, wenn sie erfolgreich ist und wenn ein Fehler auftritt, und ich brauche Ajax, andernfalls verschwindet mein modaler Dialog aufgrund der neuen Anfrage.

Hier sind meine Fragen:

  • Wie reagiere ich auf Fehler, die während meiner Validierung in meinem Controller auftreten?
  • Welche Fehler http Codes muss ich für Validierungsfehler in meinem Controller verwenden?
  • Wie aktualisiere ich die spezifischen Felder mit Fehlermeldungen in meinem Formular?
  • Wie aktualisiere ich den Flash-Teil meiner Seite, um die Erfolgsmeldung zu rendern?
  • Wie ist es möglich, andere Teile der Seite nach dem Erfolg zu aktualisieren?

Danke!

    
Gambo 10.10.2011, 20:29
quelle

2 Antworten

19

Es gibt viele verschiedene Möglichkeiten, dies zu erreichen und wahrscheinlich ein oder mehrere Plugins, um Sie in Schwung zu bringen. Ich werde Ihnen jedoch zeigen, wie ich generell damit umgehe. Ich habe ein Objekt, das so aussieht ...

%Vor%

Dies ist das Objekt, das ich als JSON rende. Wenn also Validierungsfehler vorliegen, wird der Erfolg falsch und ich füge alle Fehler zur Fehlerkarte hinzu. Ich mache das in einem Service und diese Methode sieht so aus:

%Vor%

Also sieht mein Controller so aus wie

%Vor%

In meinem clientseitigen Code mache ich so etwas (mit dem jQuery-Formular-Plugin, aber das würde auch mit einer generischen $ .ajax / $ .post / $ .get-Methode funktionieren ...

%Vor%

Und meine showErrors Funktion

%Vor%

Ich hoffe, das hilft.

    
Gregg 10.10.2011, 21:44
quelle
2

Die akzeptierte Antwort ist gut und ich bin für einen serviceorientierten Ansatz. Mit Ajax-Controllern finde ich manchmal, dass die Anforderungen sehr einfach sind und Fehlerbehandlung und Persistenz direkt in der Steuerung durchgeführt werden können. Ein nettes oneliner, um Ihre netten i18n Fehler zu einer Sammlung hinzuzufügen, ist:

%Vor%

Geben Sie JSON dann wie folgt zurück

%Vor%

Und Ihr JavaScript (Grails 2 hat einen Dokumentationsfehler, also verwenden Sie 'Daten' und nicht 'e', ​​wenn Sie JQuery als Standard verwenden.

Rufen Sie Ihr Ajax

an %Vor%

Und verarbeiten Sie die Antwort

%Vor%     
Peter 14.05.2012 18:33
quelle

Tags und Links