Fügen Sie den Eigenschaften der Groovy-Klasse Einschränkungen hinzu (nicht der Grails-Domänenklasse!)

StackOverflow https://stackoverflow.com/questions/5891952

  •  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!

War es hilfreich?

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;)

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