2012-03-06 3 views
-1

Я пытаюсь получить выбранное значение dropdownchoice в wicket framework, но я не могу его получить. Как я могу получить выбранное значение DropDownChoice в событии изменения dropdownchoice ??? Спасибо. IWicket Framework DropDownChoice

+2

Показать некоторый код, вставьте ошибку ... «Это не работает» не поможет нам понять, в чем проблема. –

ответ

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 будет обновлять ModelObject DropDownChoice и выполнять его проверки. Если проверки не выполняются, 'onError' будет вызываться вместо' onUpdate'. Обратите внимание, что это имеет недостаток; «FormValidators» с участием этого компонента не будут автоматически выполняться. Если вы хотите получить вход, не обновляя объект модели, переопределите ['getUpdateModel()'] (http://wicket.apache.org/apidocs/1.4/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior. html # getUpdateModel()) и вернуть false. –

+1

Не было бы более идиоматично использовать OnChangeAjaxBehavior? – prasopes

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

Это может быть поздно. Спасибо Богу, что Нишант нашел свой ответ. –

+0

Спасибо вам большое. – fledgling

Смежные вопросы