2012-03-06 69 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