在我的 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.