Ich habe Probleme, Werte mithilfe einer vorübergehenden Eigenschaft mit Grails 3.1.4 zu binden.Wie zu vermeiden "Kann schreibgeschützte Eigenschaft nicht lesen" mit bindbare Einschränkung für transient
Unter dieser Domain als Beispiel:
class Domain {
Boolean b1
Boolean b2
Boolean b3
void setPropertyList(propertyList) {
if(propertyList.contains('someValue'))
this.b1 = true
}
static transients = ['propertyList']
static constraints = {
propertyList bindable: true
}
}
Ich möchte eine bestimmte Eigenschaft verwenden (hier: propertyList
) für die Datenbindung. Diese Eigenschaft ist in der Datenbindungsquelle verfügbar, jedoch nicht in meiner Domäne. Also fügte ich einen Transienten und einen Setter hinzu. Um die Transiente propertyList
für die Datenbindung einzuschließen, fügte ich die Einschränkung hinzu.
Der Setter setPropertyList
wird während der Datenbindung aufgerufen. Für die Eigenschaften der resultierenden Domäneninstanz wurden alle Eigenschaften wie erwartet festgelegt. Aber wenn ich versuche, das führte Instanz zu speichern ich die folgende Ausnahme erhalten:
groovy.lang.GroovyRuntimeException: Cannot read write-only property: propertyList
at org.grails.validation.ConstrainedPropertyBuilder.doInvokeMethod(ConstrainedPropertyBuilder.java:74)
Sieht aus wie Grails einige Probleme, die Instanz zu bestätigen.
Irgendwelche Ideen, wie das zu beheben?