我想创建一个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的源代码,您会发现它非常简单。

07-24 15:48