Wicket и Java: CheckGroup содержат нулевой объект модели

#java #wicket

#java #калитка

Вопрос:

Я получаю эту ошибку:

CheckGroup содержит объект null model, который должен быть объектом типа java.util.Коллекция

Я не уверен, что вызывает эту проблему, и никто из моей команды не может решить это.

Мне пришлось отредактировать это, поскольку оно содержит элементы, связанные с бизнесом.

Java:

 Form<?> form = new Form<Object>("myform");
add(form);
CheckGroup<?> checkGroup = new CheckGroup<Object>("checkgroup");
form.add(checkGroup);       
checkGroup.add(new CheckGroupSelector("groupselector"));
listView = new ListView<info>("listView", sessionObject.getList())
    {
      private static final long serialVersionUID = 1L;

      @Override
      protected void populateItem(ListItem<info> item)
      {
          item.add(new Check("recordSelected", item.getModel()));
          item.add(new Label("IDListItem", new PropertyModel<String>(item.getModel(), "Number")));
      }
    };
checkGroup.add(listView);
  

HTML:

                     <table wicket:id="checkgroup">
                        <tr>
                            <td width="20"><input wicket:id="groupselector" type="checkbox" /></td>
                            <td width="80"><b>Number</b></td>
                        </tr>
                        <tr wicket:id="listView">
                            <td width="20"><input wicket:id="recordSelected" type="checkbox" /></td>
                            <td width="80"><span wicket:id="IDListItem"></span></td>
                        </tr>
                    </table>
  

Ответ №1:

Похоже, вы следуете примеру из wicketstuff.org . Но этот пример неполный, поскольку он не передает модель в CheckGroup. Игорь Вайнберг упоминал на форумах пользователей Wicket, что использовалась составная модель [1].

Так что передайте модель, и все будет в порядке.

Ответ №2:

Попробуйте использовать фиктивную модель, например CheckGroup<?> checkGroup = new CheckGroup<Object>("checkgroup", new ArrayList<Object>());

Javadoc говорит:

Конструктор, который создаст коллекцию моделей по умолчанию

при использовании конструктора с 1 аргументом, но я не вижу, где в коде создается эта коллекция моделей по умолчанию…

Ответ №3:

Вы должны установить модель на место использования. пример кода:

 CheckGroup targetsGroup = new CheckGroup<>("targets", new ArrayList<City>());