Ich erhalte eine NullPointerexception, wenn ich auf statische Einschränkungen zugreift
Frage
Der Code
${personRequest.constraints.requestStatus.inList}
In meiner GSP -Datei wirft a NullPointerException
, aber new PersonRequest().constraints..
Arbeiten. Wieso den? Nicht constraints
statisch?
Lösung
Kopiert von hier (Grails-User Mailingliste)
Aber warum funktioniert es nicht, statische Felder zu erreichen?
Weil das statische Feld "Einschränkungen" ein Schließgefühl ist. Es hat keine Unterausbrüche in Bezug auf die Einschränkungen.
Grails bewertet diesen Schließ mit einem Einschränkungserbauer, der "Anrufe" auf Methoden überwacht, die nicht existieren, dh die von Ihnen verwendeten Eigenschaftennamen:
type( inList: [xxxxx])
... verursacht einen Methodenaufruf zum "Typ" mit einem Kartenparameter, der "inlist" ==> Einen Wert enthält.
Aus diesen Informationen erstellt Grails eine Liste aller Einschränkungen
Verfügbar und bindet sie an zukünftige Instanzen der Domänenklasse.Wenn Sie also auf Benutzer zugreifen. Ermittelt statisch, erhalten Sie eine
Schließung.Wir können nach der Bewertung des Verschlusses, mit dem sie initialisiert wird, den Wert der statischen Einschränkungen zur Laufzeit ersetzt. Dies könnte jedoch ein bisschen "zu viel" Magie sein. Was denken die Leute?
Zu Ihrer Information ist es jetzt so, denn bis 0,4 (wenn ich mich erinnere) Einschränkungen nicht statisch und in 0,4 können sie immer noch nicht statisch sein. Nur in 0,5
Werden wir eine Ausnahme machen/nicht statische Einschränkungen ignorieren?