Wicket Dropdownchoice не может изменить выбранное значение - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть два компонента DropDownChoice категории 1 и категории 2. Я хочу изменить список категорий2 при изменении выбранного значения категории1. Но измененное значение category1 всегда сохраняет первоначальное значение при вызове метода category1.getModelObject ().

private void addCategoryChoice(Form form) {
    List<Category1> category1List = category1Impl.listProduct();

    ChoiceRenderer renderer1=new  ChoiceRenderer<Category1>() {
        @Override
        public Object getDisplayValue(Category1 value) {
            return value.getName();
        }
    };
    DropDownChoice<Category1> category1 = new DropDownChoice<Category1>("category1",
          new Model<Category1>(category1List.get(1)) , category1List,renderer1);

    category2List = category2Imple.listByCategory1Id(category1.getModelObject().getId());
    ChoiceRenderer renderer2=new  ChoiceRenderer<Category2>() {
        @Override
        public Object getDisplayValue(Category2 value) {
            return value.getName();
        }
    };
    DropDownChoice<Category2> category2 = new DropDownChoice("category2",category2List,renderer2);
    form.add(category2);

    category1.add(new AjaxEventBehavior("change") {
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            category2List.clear();

            int id=category1.getModelObject().getId();
            category2List.addAll(category2Imple.listByCategory1Id(Integer.valueOf(id)));
            category2.setChoices(category2List);
        }
    });
    form.add(category1);
}

1 Ответ

3 голосов
/ 07 апреля 2020

AjaxEventBehavior не обновляет модель компонента. Вместо этого вы должны использовать OnChangeAjaxBehavior.

...