如何访问Wicket调色板中当前选定的项目

如何访问Wicket调色板中当前选定的项目,wicket,Wicket,我试图覆盖Wicket调色板的某些功能。我附上了一张我试图用调色板完成的图片。基本上,除了调色板的select item clickbutton moveToRight功能外,我还想知道在移动之前选择了哪个项目。当我在任一面板中选择一个项目并单击视图按钮时,我应该能够显示与调色板中当前所选项目相关的html页面。 现在,按钮被放置在调色板代码之外,只要我能够获得所选元素的ID,我就能够完成我的目标。 我需要知道在调色板中选择了哪个项目,这一点让我感到困惑 以下是我迄今为止所尝试的: 1.使用Aj

我试图覆盖Wicket调色板的某些功能。我附上了一张我试图用调色板完成的图片。基本上,除了调色板的select item clickbutton moveToRight功能外,我还想知道在移动之前选择了哪个项目。当我在任一面板中选择一个项目并单击视图按钮时,我应该能够显示与调色板中当前所选项目相关的html页面。 现在,按钮被放置在调色板代码之外,只要我能够获得所选元素的ID,我就能够完成我的目标。 我需要知道在调色板中选择了哪个项目,这一点让我感到困惑

以下是我迄今为止所尝试的: 1.使用AjaxFormComponentUpdateingBehavior将onclick侦听器添加到ChoiceComponent

最终调色板classFormMapping=新调色板(“formsPalette”,新列表模型(selectedFormsList), formsList,新CustomObjectChoiceRender(),8,false){

  • 使用“onclick”侦听器将记录器组件添加到调色板。 此侦听器根本不会被调用
  • 最终调色板classFormMapping=新调色板(“formsPalette”,新列表模型(selectedFormsList), formsList,新CustomObjectChoiceRender(),8,false){


    请提供帮助。提前感谢。

    调色板。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;
            }
    
        };