我是wicket框架的新手, 我的要求如下。 在表单中,我需要显示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 code,
<span wicket:id="group"></span><br/>
<select wicket:id="mobiles"></select>
但它不起作用, 我需要点击1单选按钮显示下拉列表,然后点击其他隐藏下拉列表。
答案 0 :(得分:1)
您还需要覆盖wantOnSelectionChangedNotifications()
中的RadioChoice
并返回true
。否则,将不会生成用于调用onSelectionChanged()
的JavaScript。
要考虑的一件事:由于使用onSelectionChanged()
会导致页面重新加载,您可以尝试在RadioChoice中添加AjaxFormChoiceComponentUpdatingBehavior
,以便在单击其中一个RadioButtons时只有DropDownChoice会更新:
radioChoice.add(new AjaxFormChoiceComponentUpdatingBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {
/* Your code here */
// Add DropDownChoice to the Ajax Response
target.add(ddc);
}
});