Wicket 基于下拉选择动态添加面板

Wicket 基于下拉选择动态添加面板,wicket,Wicket,我是wicket的新手,我尝试了一些东西,比如,我有四个面板,但根据DropdownChoice组件中的选择只应添加一个。 我尝试使用onSelectChange()方法添加面板,但不起作用。任何人都可以帮我找到正确的示例代码。我给你举一个这个问题的例子。希望能有帮助 DropDownChoice dropDown = new DropDownChoice(...........); AjaxFormComponentUpdatingBehavior behavior = new

我是wicket的新手,我尝试了一些东西,比如,我有四个面板,但根据DropdownChoice组件中的选择只应添加一个。
我尝试使用onSelectChange()方法添加面板,但不起作用。任何人都可以帮我找到正确的示例代码。

我给你举一个这个问题的例子。希望能有帮助

    DropDownChoice dropDown = new DropDownChoice(...........);
    AjaxFormComponentUpdatingBehavior behavior = new AjaxFormComponentUpdatingBehavior(
                            "onchange") {

                @Override
            protected void onUpdate(AjaxRequestTarget target) {
                  //you should write here the logic that
               // replaces the panel, something like: content.addOrReplace(panel)

                target.addComponent(form);
            }
    };
    dropDown.add(behavior);

因此,仅此而已,您必须使用ajaxformcomponentupdatebehavior来处理onchange事件。如果不需要下拉菜单,可以使用tabbedpanel。您可以在这里找到示例代码:

我给您举一个这个问题的示例。希望能有帮助

    DropDownChoice dropDown = new DropDownChoice(...........);
    AjaxFormComponentUpdatingBehavior behavior = new AjaxFormComponentUpdatingBehavior(
                            "onchange") {

                @Override
            protected void onUpdate(AjaxRequestTarget target) {
                  //you should write here the logic that
               // replaces the panel, something like: content.addOrReplace(panel)

                target.addComponent(form);
            }
    };
    dropDown.add(behavior);

因此,仅此而已,您必须使用ajaxformcomponentupdatebehavior来处理onchange事件。如果不需要下拉菜单,可以使用tabbedpanel。您可以在这里找到示例代码:

在大多数情况下,更改这些面板的可见性而不是添加或删除它们应该更容易。但总的来说,这应该是正确的做法。我使用五个面板,并在每个面板上设置可见性,这样会增加更多的代码。但是我试过上面的方法。但是我得到了null指针异常,因为下拉列表中的第一个选项将为null值。我甚至设置了可见性,但它仍然抛出相同的异常。仍在努力处理this@lepike:谢谢。这个解决方案奏效了,我在pageload上使用EmptyPanel来处理空指针异常。我可以这样做,而且我已经尝试过了,但我的声誉很差:)在大多数情况下,仅仅更改这些面板的可见性而不是添加或删除它们应该更容易。但总的来说,这应该是正确的做法。我使用五个面板,并在每个面板上设置可见性,这样会增加更多的代码。但是我试过上面的方法。但是我得到了null指针异常,因为下拉列表中的第一个选项将为null值。我甚至设置了可见性,但它仍然抛出相同的异常。仍在努力处理this@lepike:谢谢。这个解决方案奏效了,我在pageload上使用EmptyPanel来处理空指针异常。我可以这样做,我已经尝试过了,但我的声誉很低,无法投票:)