1

我正在使用 Wicket 框架附加一个onchange事件。问题是当事件被触发时旧值不断被返回(这是有道理的)。请参阅下面的代码

我想要做的是在更改后获取选择/保管箱的“”值。

我怎样才能做到这一点?

    dropdown.add(new AjaxEventBehavior("onchange") {

        /**
         *
         * @param target
         */
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            Component component = getComponent();
            DropDownChoice dropdown = (DropDownChoice) component;

            String value = dropdown.getValue();//This brings back the old value…
        }
    })
4

3 回答 3

4

您必须使用 AjaxFormComponentUpdatingBehavior,否则将不会提交新值,然后调用 getModelObject() 来获取新选择。

于 2013-04-12T09:59:18.730 回答
1

看看这个检票口的例子

下拉ajax示例

带有代码的下拉 ajax 示例演示

注意方法:wantOnSelectionChangedNotifications

如果选择更改,是否应使用 javascript window.location 调用此组件的 onSelectionChanged 事件处理程序。如果为 true,则每次选择更改都会生成往返,从而导致模型被更新(仅此组件)并调用 onSelectionChanged。此方法默认返回 false。如果您希望改用 Ajax,让 wantOnSelectionChangedNotifications() 返回 false 并使用 onchange 事件向组件添加 AjaxFormComponentUpdatingBehavior。

于 2013-04-12T11:43:43.280 回答
0

从底层模型中获取价值可能会更好。当您可以访问变量“下拉菜单”时,也无需使用 getComponent。

dropdown.add(new AjaxEventBehavior("onchange") {

    /**
     *
     * @param target
     */
    @Override
    protected void onEvent(AjaxRequestTarget target) {

        String value = dropdown.getModelObject();
    }
})
于 2013-04-12T08:01:14.243 回答