无法根据所选的单选按钮显示/隐藏下拉列表

时间:2015-07-20 07:39:52

标签: wicket

我是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单选按钮显示下拉列表,然后点击其他隐藏下拉列表。

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