如何访问Wicket调色板中当前选定的项目
我试图覆盖Wicket调色板的某些功能。我附上了一张我试图用调色板完成的图片。基本上,除了调色板的select item clickbutton moveToRight功能外,我还想知道在移动之前选择了哪个项目。当我在任一面板中选择一个项目并单击视图按钮时,我应该能够显示与调色板中当前所选项目相关的html页面。 现在,按钮被放置在调色板代码之外,只要我能够获得所选元素的ID,我就能够完成我的目标。 我需要知道在调色板中选择了哪个项目,这一点让我感到困惑 以下是我迄今为止所尝试的: 1.使用AjaxFormComponentUpdateingBehavior将onclick侦听器添加到ChoiceComponent 最终调色板classFormMapping=新调色板(“formsPalette”,新列表模型(selectedFormsList), formsList,新CustomObjectChoiceRender(),8,false){如何访问Wicket调色板中当前选定的项目,wicket,Wicket,我试图覆盖Wicket调色板的某些功能。我附上了一张我试图用调色板完成的图片。基本上,除了调色板的select item clickbutton moveToRight功能外,我还想知道在移动之前选择了哪个项目。当我在任一面板中选择一个项目并单击视图按钮时,我应该能够显示与调色板中当前所选项目相关的html页面。 现在,按钮被放置在调色板代码之外,只要我能够获得所选元素的ID,我就能够完成我的目标。 我需要知道在调色板中选择了哪个项目,这一点让我感到困惑 以下是我迄今为止所尝试的: 1.使用Aj
请提供帮助。提前感谢。调色板。java javadoc解释了如何“Ajax化”它: 但这对您没有帮助,因为选择首先在客户端完成,然后会通知Wicket:
您需要在Wicket one或monkey patch palette.JS之前为“change”事件注册自己的JS事件监听器,以覆盖
Wicket.palette.updateRecorder()
函数。Hi@martin-g,谢谢您的回复。为change事件注册JS事件监听器,是指AjaxFormComponentUpdateBehavior(“onchange”))监听器?我已经尝试过了,但只有在我点击Add按钮将其移动到所选列表后才会调用它。此处附加的代码:recorder.Add(新AjaxFormComponentUpdateBehavior(“onchange”){private static final long serialVersionUID=1L;@Override protected void onUpdate(AjaxRequestTarget目标){迭代器selectedColumns=getSelectedChoices();List selectedEventTypeAttributes=new ArrayList();而(selectedColumns.hasNext()){FormTemplate eventTypeAttribute=selectedColumns.next();selectedEventTypeAttributes.add(eventTypeAttribute);}}}}};
@Override
protected void onBeforeRender() {
super.onBeforeRender();
getChoicesComponent().add(new AjaxFormComponentUpdatingBehavior("onclick"){
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println("REACHED HERE"+ getFormComponent());
/*
* The code reaches here for each click but I am unable to know which item was selected */
}
});
}
};
protected Recorder newRecorderComponent() {
Recorder recorder = super.newRecorderComponent();
recorder.add(new AjaxFormComponentUpdatingBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println("reached record on click ");
}
});
return recorder;
}
};