grails-validation

___ tag123grainsvalidation ___ hilf uns dieses Wiki zu bearbeiten ___ qstnhdr ___ Was ist die Verbindung zwischen validate () und hasErrors ()? ___ qstntxt ___

Diese Frage ergibt sich aus dem Problem eine andere Frage nicht-persistente Domain-Klasse , auch nach all den Dingen, die ich nach die Anweisung , Teil 7.5.

Nach Victors Weg habe ich das Problem mit validate () behoben, aber ich verstehe nicht, warum es funktioniert. Die Grails-Dokumente scheinen nichts über Sie zu sagen, sollten Sie eine validate () aufrufen, bevor die Funktion hasErrors () funktioniert. Wie konnte das passieren?

    
___ tag123grails ___ Grails ist ein Open-Source-Framework für Web-Anwendungen, das die Groovy-Programmiersprache verwendet, die wiederum auf der Java Virtual Machine (JVM) und Java basiert das "Kodieren nach Konvention" und verwendet gängige Java-Technologien wie Hibernate und Spring. ___ answer4544852 ___

Es macht für mich Sinn, dass %code% aufgerufen werden muss, bevor ein Objekt gefragt wird, ob es %code% (oder %code% für richtige Domänenobjekte, die %code% unter den Covern aufrufen). Validieren heißt in diesem Zusammenhang "Prüfe, ob dieses Objekt gültig ist und ggf. Fehler anzeigen".

Alternativ kann die GORM Implementierung würde rufen müssen %code% jedes Mal, jede Änderung an einem Objekt gemacht wird, die mir weniger erwünschtes Verhalten wäre, da es eine Menge Arbeit bedeuten könnten häufig und unnötig gemacht werden (einige dieser Einschränkungen könnte eine Menge Arbeit bedeuten).

Der Anfang von Abschnitt 7.2 sagt ziemlich klar "Um eine Domain-Klasse zu validieren, können Sie die validate-Methode für jede Instanz aufrufen". Es stellt auch fest, dass "innerhalb Grails gibt es im Wesentlichen 2 Phasen der Validierung, die erste Phase ist Datenbindung, die auftritt, wenn Sie Request-Parameter auf eine Instanz wie binden ... An dieser Stelle haben Sie möglicherweise bereits Fehler in der Eigenschaft Fehler aufgrund Typumwandlung (wie Strings Daten konvertieren). Sie diese überprüfen und den ursprünglichen Eingangswert unter Verwendung der Fehler-API erhalten. ... die zweite Phase der Validierung passiert, wenn Sie bestätigen rufen oder zu speichern. Dies ist, wenn Grails wird das gebundene validieren values ​​agains die von Ihnen definierten Einschränkungen. "

Die Dokumentation für %code% auch dies erwähnt. Sie können darauf zugreifen, indem Sie den Methodenaufruf im Navigationsrahmen auf der linken Seite finden, wenn Sie sich auf der Dokumentationsseite befinden. Ich würde immer empfehlen, sowohl auf diese als auch auf die beschreibenden Benutzerleitfäden zu schauen, da diese oft ein wenig detaillierter sind. Hier ist die Seite für %code% -Methode zu.

Ich hatte nie Probleme, %code% direkt aufzurufen - es ist mir sehr klar und ich kann den Punkt auswählen, an dem die ganze Arbeit erledigt ist und ich bin bereit für die Validierung. Ich kann nicht eine Option, um dieses Verhalten überall zu ändern, aber wenn Sie %code% wollen automatisch oder unter bestimmten Bedingungen genannt werden, können Sie vielleicht einig Groovy Meta-Programmierung Magie von vielleicht das Hinzufügen %code% der Klasse verwenden könnten und es haben Rufen Sie %code% auf, bevor Sie bestimmte Anrufe weiterleiten. Hier finden Sie aktuelle hier und hier . (Ich bin mir nicht sicher, ob ich das trotzdem empfehlen würde! Und bedenken Sie, dass Ihre Klasse jetzt davon abhängig ist, dass sie innerhalb des GORM-Validierungs-Frameworks verwendet wird, da die %code% -Methode sonst nicht existiert).

    
___
1
Antwort

Grails-min-Einschränkung für die Datumsvalidierung

Ich bin ein Neuling in Grails und Groovy. Ich habe eine Projekt-Domain-Klasse mit Start- und Enddatum. Ich möchte eine Einschränkung einfügen, die angibt, dass das Enddatum größer als das Startdatum sein muss (und dann muss ein anderes untergeor...
02.11.2010, 18:58
1
Antwort

Was ist die Verbindung zwischen validate () und hasErrors ()?

Diese Frage ergibt sich aus dem Problem eine andere Frage
28.12.2010, 08:04