我使用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…
}
})
答案 0 :(得分:4)
您必须使用AjaxFormComponentUpdatingBehavior,否则将不会提交新值,然后调用getModelObject()来获取新选择。
答案 1 :(得分:1)
看看这个检票口的例子
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();
}
})