我有一个表格来显示所选用户的权限。在列中我有角色,在行中有函数。在表格中的每个单元格中,我都有一个Wicket AjaxCheckBox,它使用onUpdate事件来触发一个动作。但除此之外,管理员还应该能够点击该行来选择复选框。因此,每个单元都附加了onClick事件。
如果我单击CheckBox,它将不会选择,但如果我双击它。因为我只需单击一下单元格的onClick和CheckBox的onUpdate就可以自动中和。
我正在运行Wicket 6.20
现在我像这样跑:
final WebMarkupContainer cell = new WebMarkupContainer("cont");
cell.setOutputMarkupId(true);
cell.setOutputMarkupPlaceholderTag(true);
cell.setVisibilityAllowed(true);
cell.add(AttributeModifier.append("class", checkState));
cell.add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(AjaxRequestTarget target) {
eventHandler(checked, checkState);
target.add(cell);
}
});
item.add(cell);
cell.add(new AjaxCheckBox("checkbox", checked) {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
eventHandler(checked, checkState);
target.add(cell);
}});
public void eventHandler(IModel<Boolean> checked, IModel<String> checkState) {
boolean isChecked = checked.getObject();
if (isChecked == false) {
checked.setObject(true);
checkState.setObject("checked");
//Do sth
} else if (isChecked == true) {
checked.setObject(false);
checkState.setObject("unchecked");
//Do sth
}
}
答案 0 :(得分:0)
这是Wicket 7吗?然后你应该防止AjaxCheckBox上的事件冒泡:
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
super.updateAjaxAttributes(attributes);
attributes.setEventPropagation(EventPropagation.STOP);
}