在我的 Wicket 8 应用程序中切换到我的一个表格LambdaModel
作为替代方案后,我提交测试失败,说明:PropertyModel
java.lang.ClassCastException:java.lang.String 无法转换为 java.math.BigDecimal
我的表单面板有一个NumberTextField
在我的工作场景中绑定到一个PropertyModel
.
这行得通
form.add(new NumberTextField<BigDecimal>("myBigDecimalField", new PropertyModel<>(getModel(), "myBigDecimalField")));
这不起作用
form.add(new NumberTextField<BigDecimal>("myBigDecimalField", LambdaModel.of(getModel(), MyClass::getMyBigDecimalField, MyClass::setMyBigDecimalField)));
问题是它LambdaModel
没有实现IObjectClassAwareModel
,PropertyModel
因此当NumberTextField
尝试解析类型AbstractTextComponent#152
并随后检查getModelType
模型是否是它的实例 IObjectClassAwareModel
时将不起作用,因为LambdaModel
没有实现此接口。
这是LamdaModel
不是有意为之IObjectClassAwareModel
。顺便说一句,我知道我可以通过显式声明NumberTextField
.