加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Wicket复选框自动将其更改的值提交给域对象

发布时间:2020-12-15 00:48:05 所属栏目:Java 来源:网络整理
导读:什么是最干净的方式,我可以使一个复选框自动提交它所属的窗体在Wicket?我根本不想包括一个提交按钮.该复选框由域对象中的布尔字段(在这种情况下为“帐户”)支持. 省略不相关部分的简化示例: EntityModelAccount accModel = new EntityModelAccount(Account
什么是最干净的方式,我可以使一个复选框自动提交它所属的窗体在Wicket?我根本不想包括一个提交按钮.该复选框由域对象中的布尔字段(在这种情况下为“帐户”)支持.

省略不相关部分的简化示例:

EntityModel<Account> accModel = new EntityModel<Account>(Account.class,id);

PropertyModel<Boolean> model = new PropertyModel<Boolean>(accModel,"enabled");
CheckBox checkBox = new CheckBox("cb",model);
Form form = new Form("form");
form.add(checkBox);
add(form);

HTML:

<form wicket:id="form" id="form" action="">
    <input wicket:id="cb" type="checkbox" />
</form>

编辑:为了澄清,我的目标只是在复选框被切换时更改域对象的字段( – >数据库中的值).任何(干净,简单)的方式来实现这将是罚款. (我不知道你是否真的需要这个表单.)

解决方法

只需覆盖所有复选框的wantOnSelectionChangedNotifications()即使没有覆盖onSelectionChanged() – 似乎做了我想要的.

这样,您就不需要Java侧的表单,所以上面的代码将成为:

EntityModel<Account> accModel = new EntityModel<Account>(Account.class,id);

add(new CheckBox("cb",new PropertyModel<Boolean>(accModel,"enabled")){
    protected boolean wantOnSelectionChangedNotifications() {
        return true;
    }
});

随意添加更好的解决方案,或更好地解释这种方法发生了什么!

编辑:仔细检查,我猜the method’s Javadoc使它明确为什么这样做我想要的(强调我的):

If true,a
roundtrip will be generated with each
selection change,resulting in the model being updated (of just this component) and onSelectionChanged being called.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读