2012-03-06 102 views
-1

我想在wicket框架中選擇dropdownchoice的值,但我無法得到它。 如何獲取DropDownChoice的Dropdownchoice更改事件的選定值? 謝謝。 我檢票框架DropDownChoice

+2

顯示一些代碼,粘貼錯誤......「它不工作」不幫助我們理解什麼問題。 – 2012-03-07 16:04:44

回答

7

這很容易,你需要做的就是使用AjaxFormComponentUpdatingBehavior:對於這樣的問題

DropDownChoice<String> ddc = new DropDownChoice<String>("ddc", model, Arrays.asList("a", "b", "c")); 
ddc.add(new AjaxFormComponentUpdatingBehavior("onchange") { 
    @Override 
    protected void onUpdate(AjaxRequestTarget target) { 
     System.out.println("selected: " + model.getObject()); 
    } 
}); 
+3

考慮到這個ajax行爲將更新DropDownChoice的ModelObject並執行其驗證。如果驗證失敗,將調用'onError'而不是'onUpdate'。注意這有一個缺點;涉及此組件的'FormValidators'不會自動執行。如果您只想獲取輸入,而不更新模型對象,請覆蓋['getUpdateModel()'](http://wicket.apache.org/apidocs/1.4/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior。 html#getUpdateModel())並返回false。 – 2012-03-06 15:03:53

+1

使用OnChangeAjaxBehavior代替它會更加地道嗎? – prasopes 2013-02-06 13:17:48

2

PropertyModel是不錯的選擇。 MyObject是一個對象,並有一個字符串name。我已經覆蓋其中的toString()方法名稱和它正常工作。我建議使用此方法。

topicDropDown = new DropDownChoice<MyObject>("wicktID", new PropertyModel<MyObject>  (this.object, "exp"), new LoadableDetachableModel<List<MyObject>>() { 
     @Override 
     protected List<MyObject> load() { 
      return top.getAllObjects(); 

     } 
+1

它可能遲到了。感謝上帝,尼桑找到了他的答案。 – 2013-04-03 02:33:29

+0

非常感謝。 – fledgling 2014-04-29 10:40:53