2011-06-11 77 views
0

是一个新手门,我正在试验一些东西,比如,我有四个面板,但只能根据DropdownChoice组件中的选择添加一个面板。 我试图使用onSelectChange()方法添加面板,但它不起作用。任何人都可以帮我拿出适当的样本代码。基于DropdownChoice选择的动态添加面板

回答

5

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

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); 

所以,这一切,你必须使用AjaxFormComponentUpdatingBehavior处理onchange事件。如果下拉菜单不是必需的,则可以使用tabbedpanel。在这里您可以找到示例代码:wicket tabbed panel

+0

在大多数情况下,只需更改这些面板的可见性而不是添加或删除它们应该更容易。但总的来说,这应该是一条路。 – Nicktar 2011-06-14 10:53:42

+0

我正在使用五个面板并在每个面板上设置可见性会添加更多代码。但我尝试了上述解决方案。但我得到空指针异常,因为下拉列表中的第一个选项将为空值。我甚至将能见度关闭,但它仍会引发相同的异常。仍在尝试处理这个 – Vijayakumar 2011-07-02 16:48:54

+0

@lepike:谢谢。该解决方案工作,我使用页面加载EmptyPanel,来处理该空指针异常。 – Vijayakumar 2011-07-14 07:04:12