Wicket和Java:CheckGroup包含一个空模型对象

时间:2011-05-12 18:45:49

标签: java wicket

我收到此错误:

CheckGroup包含一个空模型对象,必须是java.util.Collection类型的对象

我不确定导致此问题的原因,我的团队中的任何人都无法解决此问题。

我必须编辑它,因为它包含与业务相关的项目。

爪哇:

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>

3 个答案:

答案 0 :(得分:2)

看起来您正在关注wicketstuff.org的示例。但该示例不完整,因为它没有将模型传递给CheckGroup。 Igor Vaynberg在Wicket用户论坛中提到,使用了复合模型[1]

所以通过一个模型,你会没事的。

答案 1 :(得分:0)

尝试使用虚拟模型,例如 CheckGroup<?> checkGroup = new CheckGroup<Object>("checkgroup", new ArrayList<Object>());

Javadoc说:

  

将创建默认模型集合的构造函数

使用1-arg构造函数时,但我没有看到代码中创建此默认模型集合的位置...

答案 2 :(得分:0)

您应该将模型设置在使用位置。 示例代码:

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