验证非或最大。在 wicket listview 中启用了 1 个复选框
Validate non or max. 1 checkbox is enabled in wicket listview
如何验证在列表视图(重复器)中选中的复选框不超过一个?
我在 Wicket 中有一个带有 ListView 的表单,其结构如下:
第 1 行到第 n 行:AjaxCheckBox
和 TextField
两个元素都由 CompoundPropertyModel<SimpleType>
连接。 POJO SimpleType 看起来像:
public class SimpleType {
private boolean enabled;
private String value;
Getter/Setter...
}
如果选中多个复选框,表单应拒绝任何更改。因此,用户必须先取消选择选中的复选框,然后才能选择另一个复选框。
我尝试用 IValidator<Collection<SimpleType>>
包围 CheckGroup
,但我需要将 AjaxCheckBox
更改为组件 Check
。在这种情况下,Check
似乎未使用 CompoundPropertyModel
中的状态 enabled
进行更新。
对于这种情况,我真的需要验证者或访客吗?如何实施?
由于收音机不是一个选项,这里有一个应该可行的简单解决方案:
为了验证,使用访问所有 AjaxCheckBox-es 的 IFormValidator。
对于即时 UI 响应,我将使用取消选中先前选中的复选框的普通 JS。这也会触发 Wicket Ajax 调用以在服务器端取消选择它。
一旦提交了完整的表单,IFormValidator 就会开始工作。
如何验证在列表视图(重复器)中选中的复选框不超过一个?
我在 Wicket 中有一个带有 ListView 的表单,其结构如下:
第 1 行到第 n 行:AjaxCheckBox
和 TextField
两个元素都由 CompoundPropertyModel<SimpleType>
连接。 POJO SimpleType 看起来像:
public class SimpleType {
private boolean enabled;
private String value;
Getter/Setter...
}
如果选中多个复选框,表单应拒绝任何更改。因此,用户必须先取消选择选中的复选框,然后才能选择另一个复选框。
我尝试用 IValidator<Collection<SimpleType>>
包围 CheckGroup
,但我需要将 AjaxCheckBox
更改为组件 Check
。在这种情况下,Check
似乎未使用 CompoundPropertyModel
中的状态 enabled
进行更新。
对于这种情况,我真的需要验证者或访客吗?如何实施?
由于收音机不是一个选项,这里有一个应该可行的简单解决方案:
为了验证,使用访问所有 AjaxCheckBox-es 的 IFormValidator。
对于即时 UI 响应,我将使用取消选中先前选中的复选框的普通 JS。这也会触发 Wicket Ajax 调用以在服务器端取消选择它。 一旦提交了完整的表单,IFormValidator 就会开始工作。