我是wicket开发的初学者。我有一个关于弹出对话框的问题。单击按钮时会触发此对话框。
此对话框在下方包含复选框(接受条款)和多个单选按钮,两个按钮,一个取消< / strong>和另一个接受。
我的问题是我需要确保,我同时选中了复选框和一个收音机来设置按钮“接受”以启用状态,否则它应该被密封(启用=假)。
问题是单选按钮位于不同的文件中(它们位于其他文件的面板内,我们称之为“CancellationRadioButtons”)。我设法在主对话框中正确渲染它们(在“MainPanel”中执行add(cancellationradioButtons))。
问题是,如果两个元素:复选框和单选按钮包含相应的模型,我该如何确保两者都被选中(复选框和一个单选按钮) ),我的意思是你如何用 CancellationRadioButtons 传达 MainPanel ,反之亦然?
例如,触发对话框时,默认情况下未选择任何内容,因此“接受”按钮将被密封。如果我单击其中一个单选按钮,“接受”按钮将保持密封,直到我选中该复选框。如果我选中复选框并且没有选择单选按钮,则会发生同样的情况。
我有两种元素的模型,但我不知道如何沟通它们。我在Accept按钮中有一个SetEnabled方法(现在只在勾选复选框时启用),但我不知道如何在两个条件之间进行联接(选中Checkbox.checked和radiobutton)
我想在这里发布代码以使其更简单,但我不能因为公司政策,而且我很难在我的本地电脑上复制相同的对话框,因为它已经完成,我'我只是在那里修理东西。
如何继续这一点的任何想法,一些提示和简单的例子将不胜感激!
答案 0 :(得分:1)
这是像Wicket这样的有状态框架的强大一面!你说复选框和单选按钮有自己的模型。解决问题的最简单方法是将这些模型也用于“接受”按钮,这样它就可以在onConfigure()
中使用它来决定调用this.setEnabled(...)
时要使用的值。
您可以使用Wicket的CompoundPropertyModel
作为对话框,每个子组件都可以使用它的属性。 “接受”按钮将使用复合模型对象来查看所有属性的值。
或者您可以在对话框构造函数中创建当前单独的模型,并仅将它们传递给需要它们的组件。