Fügen Sie den Eigenschaften der Groovy-Klasse Einschränkungen hinzu (nicht der Grails-Domänenklasse!)
-
28-10-2019 - |
Frage
Wie können wir einer Eigenschaft einer Groovy-Klasse einige allgemeine Einschränkungen (d. H. MaxLength, nullable) hinzufügen?Ich weiß, dass wir dies in der Grails-Domänenklasse tun können, aber ist es möglich, dass dies eine Groovy-Klasse ist (ich verwende sie als DTO-Klasse für mein Grails-Projekt)?
Vielen Dank!
Lösung
Sie können Befehlsklassen Einschränkungen hinzufügen.Wenn sich eine Befehlsklasse in derselben .groovy-Datei wie ein Controller befindet (in Groovy können Sie mehr als eine öffentliche Klasse in jeder .groovy-Datei haben), müssen Sie für Grails nichts Besonderes tun, um sie als Befehlsklasse zu erkennen.
Wenn sich Ihre Befehlsklasse jedoch an einer anderen Stelle befindet (z. B. unter src / groovy), müssen Sie sie mit @Validateable
versehen und den Paketnamen zum grails.validateable.packages
-Parameter in Config.groovy
hinzufügen.Hier ist ein Beispiel für einen Befehl, der sich nicht in derselben Datei wie ein Controller befindet
pacakge com.example.command
@Validateable
class Person {
Integer age
String name
static constraints = {
name(blank: false)
age(size 0..100)
}
}
Fügen Sie dem Config.groovy
Folgendes hinzu
grails.validateable.packages = ['com.example.command']
Befehlsklassen verfügen über eine von Grails hinzugefügte validate()
-Methode.Nach dem Aufruf dieser Methode sind alle Fehler in der Eigenschaft errors
(gemäß Domänenklassen) verfügbar.
Andere Tipps
Sie sind sich nicht sicher, ob dies für Ihre Verwendung relevant ist (ich bin mit DTOs nicht vertraut), aber in der aktuellen Version (2.3.8) können Sie einer abstrakten Klasse auch Grails-Einschränkungen hinzufügen, die von der geerbt werdenDomänen, die es erweitern.Ihre IDE mag es vielleicht nicht;)