2015-07-20 91 views
0

我是新来的检票框架, 我的要求如下。 在表单中,我需要显示2个单选按钮(通过使用RadioGroup或RadioChoice)和下拉列表。 为单选按钮,只需要命名,显示/隐藏。 当我点击显示/隐藏时,响应没有回应。 这里是我的代码, 的Java,无法根据所选单选按钮显示/隐藏下拉菜单

private DropDownChoice<String> ddc; 
private RadioChoice<String> radioChoice; 
private String selected; 

/* creating a radio choice */ 
     List<String> options = new ArrayList(); 
     options.add("show"); 
     options.add("hide"); 

     radioChoice = new RadioChoice("group", new 

PropertyModel<String>(this, "selected"), options) { 
      @Override 
      public void onSelectionChanged() { 
       // super.onSelectionChanged(); 
       // if ("show".equals(getValue())) { 
       // ddc.setVisible(true); 
       // } 
       // if ("hide".equals(getValue())) { 
       // ddc.setVisible(false); 
       // ddc.clearInput(); 
       // ddc.detach(); 
       // ddc.remove(); 

       ddc.setEnabled(false); 
       // } 

      } 
     }; 


     add(radioChoice); 

     /* creating a drop down list */ 
     List<String> mobiles = new ArrayList(); 

     mobiles.add("LG"); 
     mobiles.add("oppo"); 
     mobiles.add("oneplus"); 

     ddc = new DropDownChoice("mobiles", mobiles); 
     ddc.setOutputMarkupId(true); 
     add(ddc); 

HTML代码,

<span wicket:id="group"></span><br/> 
      <select wicket:id="mobiles"></select> 

,但它不工作, 我需要点击1个单选按钮来显示下拉列表中,和其他隐藏dropown 。

回答

1

您还需要在您的RadioChoice中覆盖wantOnSelectionChangedNotifications()并返回true。否则,将不会生成用于调用onSelectionChanged()的JavaScript。

有一点要考虑:由于在重新加载页面使用onSelectionChanged()结果,你可以尝试,而不是增加一个AjaxFormChoiceComponentUpdatingBehavior您RadioChoice,使点击单选按钮之一,当只有你DropDownChoice得到更新:

radioChoice.add(new AjaxFormChoiceComponentUpdatingBehavior() { 
    @Override 
    protected void onUpdate(AjaxRequestTarget target) { 
     /* Your code here */ 

     // Add DropDownChoice to the Ajax Response 
     target.add(ddc); 
    } 
});