我有一个DropDownChoice
带两个OnChangeAjaxBehavior
s 的。当我选择应该设置为DropDownChoice
禁用的值 2 时,它会在它显示我之前获得第二次禁用,AccessDeniedPage
并且在服务器日志中我看到一个ListenerNotAllowedInvocationException
. 在 Wicket 6 和 7 中有这个。
知道如何解决这个问题吗?
下面的代码:
选择私有整数;
public HomePage(final PageParameters parameters) {
super(parameters);
final DropDownChoice<Integer> ddc = new DropDownChoice<Integer>("ddc", new PropertyModel(this, "selected"), Arrays.asList(1,2,3)){
@Override
protected void onConfigure() {
super.onConfigure();
setEnabled(!Objects.equals(getModel().getObject(), 2));
}
};
ddc.add(new OnChangeAjaxBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget art) {
art.add(getComponent());
saveToDb(model.getObject);
}
});
ddc.add(new OnChangeAjaxBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget art) {
art.add(getComponent(), otherComponent);
}
});
ddc.setOutputMarkupId(true);
add(ddc);
}
我尝试禁用与组件条件相同的行为之一,但我没有工作。
@Override
public boolean isEnabled(Component component) {
return !Objects.equals(component.getDefaultModelObject(), 2);
}
或者像这样:
@Override
public boolean isEnabled(Component component) {
return component.isEnabled();
}