无法将数据模型与arraylist一起使用



我的数组列表是:

private static final ArrayList<Order> orderList = 
        new ArrayList<Order>(Arrays.asList(
        new Order("A0001", "Intel CPU", 
                new BigDecimal("700.00"), 1),
        new Order("A0002", "Harddisk 10TB", 
                new BigDecimal("500.00"), 2),
        new Order("A0003", "Dell Laptop", 
                new BigDecimal("11600.00"), 8),
        new Order("A0004", "Samsung LCD", 
                new BigDecimal("5200.00"), 3),
        new Order("A0005", "A4Tech Mouse", 
                new BigDecimal("100.00"), 10)
    ));
private final DataModel<Order> ordering = new ArrayDataModel<Order>(orderList);// this line shows error
    public DataModel<Order> getOrderListDataModel() {
        return ordering;
    }

JSF dataTable不包含任何显示当前所选行号的方法。然而,我可以用javax.faces.model.DataModel类破解它,它有一个getRowIndex()方法来返回当前选择的行号。

这个数组列表实际上是以表格形式出现的,这是我通过JSF完成的。

我可以将它与我自己类型的Array一起使用,但不能与arraylist一起使用?

它采用数组而不是列表作为参数。列表没有构造函数。也就是说,如果我们谈论的是javax.faces.model.ArrayDataModel

正确。

正如ArrayDataModel的Javadoc所示,它没有一个以List为参数的构造函数。它需要一个数组:

ArrayDataModel(E[]数组)

构造一个新的ArrayDataModel来包装指定的数组。

使用ListDataModel代替

private final DataModel<Order> ordering = 
    new ListDataModel<Order>(orderList);

我希望您谈论的是javax/faces/DataModelhttp://docs.oracle.com/javaee/5/api/javax/faces/model/DataModel.html

如果要作为数据模型列出,请尝试使用ListDataModelhttp://docs.oracle.com/javaee/5/api/javax/faces/model/ListDataModel.html

在您的代码中,尝试更改如下,

  private static final List<Order> orderList = 
        new ArrayList<Order>(Arrays.asList(
        new Order("A0001", "Intel CPU", 
                new BigDecimal("700.00"), 1),
        new Order("A0002", "Harddisk 10TB", 
                new BigDecimal("500.00"), 2),
        new Order("A0003", "Dell Laptop", 
                new BigDecimal("11600.00"), 8),
        new Order("A0004", "Samsung LCD", 
                new BigDecimal("5200.00"), 3),
        new Order("A0005", "A4Tech Mouse", 
                new BigDecimal("100.00"), 10)
    ));
private final DataModel<Order> ordering = new ListDataModel<Order>(orderList);// this line shows error
    public DataModel<Order> getOrderListDataModel() {
        return ordering;
    }

希望这能有所帮助。