我想创建一个ajaxcheckbox,而无需使用propertymodel将其连接到类属性。为什么示例中的代码不起作用?当用户选中或取消选中复选框时,布尔值不会改变。
boolean show = false;
AjaxCheckBox showBox = new AjaxCheckBox("showBox", new Model<Boolean>(show)){
//onUpdate stuff
};
最佳答案
布尔值不会改变,因为showBox
没有对原始变量show
的引用。您刚刚使用false初始化了showBox
模型。您所拥有的代码等效于:
AjaxCheckBox showBox = new AjaxCheckBox("showBox", new Model<Boolean>(false)){
//onUpdate stuff
};
如果要访问
showBox
的模型值,可以使用getModelObject()
,它将返回存储在AjaxCheckBox
模型中的布尔值。检票口的模型很复杂-但功能非常强大。
为了进一步说明,
Model
保留对值的引用。 PropertyModel
保留对另一个对象的引用,然后将值存储在该对象的属性中。查看Model
的源代码,您会发现它非常简单。