2013-04-11 33 views
1

我附加了一個onchange事件使用Wicket框架。問題在於,當事件被觸發時,舊值會一直返回(這是有道理的)。 請參閱下面的代碼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

你將不得不使用AjaxFormComponentUpdatingBehavior,否則新值將不會被提交,然後調用getModelObject()來獲得新的選擇保持。

0

從底層模型中獲取值可能更好。當你有權訪問變量'dropdown'時,也不需要使用getComponent。

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

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

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

看看這個檢票口的例子

Dropdown ajax example

Dropdown ajax example demo with code

注意方法:wantOnSelectionChangedNotifications

無論此組件的onSelectionChanged事件處理程序應該使用javascript窗口調用。地點如果選擇改變。如果爲true,則每次選擇更改都會生成一個往返行程,導致更新模型(僅此組件)和onSelectionChanged被調用。此方法默認返回false。如果您希望使用Ajax,請讓wantOnSelectionChangedNotifications()返回false,並使用onchange事件向組件添加AjaxFormComponentUpdatingBehavior。