Wicket onchange事件返回旧值

时间:2013-04-11 22:37:33

标签: java ajax javascript-events wicket wicket-1.6

我使用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…
        }
    })

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

看看这个检票口的例子

Dropdown ajax example

Dropdown ajax example demo with code

注意方法:wantOnSelectionChangedNotifications

  

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

答案 2 :(得分:0)

从底层模型中获取值可能更好。当您有权访问变量'dropdown'时,也无需使用getComponent。

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

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

        String value = dropdown.getModelObject();
    }
})