Wicket:DropDownChoice项目选择事件的更新模型

时间:2013-04-09 03:13:32

标签: java scala wicket

我需要在选择后立即更新模型或对象 一个DropDownChoice项目。

Bellow是我正在使用的代码:

add(new ListView[Company]("listCompanies", listData) {

    override protected def onBeforeRender() {
      //
      // ...
      super.onBeforeRender()
    }

    def populateItem(item: ListItem[Company]) = {
      var company = item.getModelObject()

      //...

      val listClients: java.util.List[Client] = clientControler.listClients


      item.add(new DropDownChoice("clientSelection", listClients,new ChoiceRenderer[Client]("name")))

在包含公司对象属性的列表视图中, 选择DropDownChoice的名称属性后,该模型 公司将在选择客户名称的情况下进行更新。

我怎样才能做到这一点?

由于

3 个答案:

答案 0 :(得分:7)

我认为你可以覆盖onSelectionChanged。但是你还需要覆盖wantOnSelectionChangedNotifications以返回true以使其工作。这样的事情。

    DropDownChoice<Client> dropDownChoice = new DropDownChoice("clientSelection", listClients) {
        @Override
        protected boolean wantOnSelectionChangedNotifications() {
            return true;
        }

        @Override
        protected void onSelectionChanged(Object newSelection) {
            // Do something here when selection is changed
        }
    };

答案 1 :(得分:7)

您需要添加更新行为:

    add(new DropDownChoice<Client>("clientSelection", listClients)
                .add(new AjaxFormComponentUpdatingBehavior("onchange") {

                    private static final long serialVersionUID = 1L;

                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {

// update your model here
// then you need to add model to target
                        target.add();
                    }
                }));

答案 2 :(得分:0)

我认为您可以在DropDownChoice上使用AjaxEventBehavior:

item.add(new DropDownChoice("clientSelection", listClients,new ChoiceRenderer[Client("name")).add(new AjaxEventBehavior("change") {
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            // TODO Auto-generated method stub
        }
    }))