我想用以下参数创建一个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的错误。

最佳答案

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)

关于java - PageableListView正确的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51556523/

10-10 18:03