PageableListView正确的参数

时间:2018-07-27 10:56:44

标签: java wicket

我想用以下参数创建一个PageableListView:

public PageableListView(final String id, final IModel<? extends List<T>> model

但是第二个参数final IModel<? extends List<T>> model使我有些困惑。我有一个列表List<Individual> individualList,其中包含一些我想用于正在创建的PageableListView的属性。我的问题是我不知道该如何进行强制转换或使其成为可接受的参数。

这就是我正在使用的东西:

 List<Individual> individualList = getIndividuals();
 WebMarkupContainer datacontainer = new WebMarkupContainer("data");
 datacontainer.setOutputMarkupId(true);
 add(datacontainer);

PageableListView listview = new PageableListView("rows", individualList, 10) {

        @Override
        protected void populateItem(ListItem item)
        {
            Individual individual = item.getModelObject();
            item.add(new Label("individual_Id", String.valueOf(individual.getId())));
            item.add(new Label("name", individual.getFirstName()));

    };
    datacontainer.add(listview);
    datacontainer.add(new AjaxPagingNavigator("navigator", listview));
    datacontainer.setVersioned(false);

在与Individual individual = item.getModelObject();的一行上,它给了我Type mismatch: cannot convert from Object to IndividualCache的错误。

1 个答案:

答案 0 :(得分:3)

PageableListView具有第二个构造函数,该构造函数仅将List<T>作为参数:

PageableListView(String id, List<T> list, int itemsPerPage)

请参阅:JavaDoc

但是您已经在使用该构造函数,因此这里确实没有问题。 您的问题是PageableListView<T>是泛型类,但是您将其用作raw type。这就是方法getModelObject仅返回Object的原因。

不要那样做。

代替使用通用参数来指定您的PageableListView应该显示哪种对象:

 PageableListView<Individual> listview = new PageableListView<Individual>("rows", individualList, 10)