0

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 がインスタンスの検証に問題を抱えているようです。

これを修正する方法はありますか?

4

1 に答える 1

0

propertyListいくつかのデバッグの後、grails は型を見つけることができず、データ バインディングをスキップすることが判明しました。

getter を追加すると、grails が型を推測するのに役立ちます。これにより、例外が回避されます。

List<String> getPropertyList() {}
于 2016-04-07T11:30:59.430 に答える