grails 3.1.4を使用して一時プロパティを使用して値をバインドする際に問題があります。一例として、このドメインを取る一時的にバインディング可能な制約を使用して '書き込み専用プロパティを読み取れません'を避ける方法
:
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
}
}
私は(ここでは:propertyList
)特定のプロパティを使用したいデータバインディングを。このプロパティはデータバインディングソースで使用できますが、自分のドメインでは使用できません。だから、私は一時的な人とセッターを加えました。データバインディングにトランジェントpropertyList
を含めるには、bindable
という制約を追加しました。
データバインディング時にセッターsetPropertyList
が呼び出されます。結果のドメインインスタンスのプロパティには、すべてのプロパティが期待通りに設定されています。 しかし、私は結果のインスタンスを保存しようとすると、私は次の例外を取得:
groovy.lang.GroovyRuntimeException: Cannot read write-only property: propertyList
at org.grails.validation.ConstrainedPropertyBuilder.doInvokeMethod(ConstrainedPropertyBuilder.java:74)
は、インスタンスを検証するためにいくつかの問題を抱えてGrailsのように見えます。
これを修正する方法はありますか?