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