如果kotlin的模型有一个字段:
class MyModel {
private val theValue: Double
get() { return 1.0 }
}
并在wicket页面中:
new PropertyModel(model , "theValue")
它会失败:
WicketRuntimeException: Property could not be resolved for class: class MyModel expression: theValue
解决方案:删除私有修饰符:
class MyModel {
val theValue: Double
get() { return 1.0 }
}
有没有办法解决这个问题(保留私有修饰符)?
(wicket 7.9.0,Kotlin 1.2)
答案 0 :(得分:2)
由于需要读取和写入模型,因此模型必须具有带备用字段的属性。
class MyModel {
private val theValue: Double
get() { return 1.0 }
}
即使您删除了private
修饰符,也没有支持字段。
试试这样:
class MyModel {
var theValue = 1.0
}
或如果您需要equals()
,hashCode()
等开箱即用:
data class MyModel(var theValue: Double = 1.0)
注意:Wicket是一个Java框架。在它的documentation中明确指出,你需要一个Java bean作为模型,它在第二个代码片段中。