我无法使用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
约束。
在数据绑定期间调用setter setPropertyList
。结果域实例的属性具有按预期设置的所有属性。
但是当我尝试保存结果实例时,我得到以下异常:
groovy.lang.GroovyRuntimeException: Cannot read write-only property: propertyList
at org.grails.validation.ConstrainedPropertyBuilder.doInvokeMethod(ConstrainedPropertyBuilder.java:74)
看起来grails在验证实例时遇到了一些麻烦。
任何想法如何解决这个问题?
答案 0 :(得分:0)
经过一些调试后发现,grails无法找到propertyList
的类型,因此会跳过数据绑定。
添加getter可帮助grails推断出类型。 这避免了例外。
List<String> getPropertyList() {}