无法使用arraylist数据模型

时间:2014-04-10 15:20:04

标签: java jsf

我的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()方法以返回当前选定的行号。

这个arraylist实际上以表格形式出现,我正在通过JSF进行。

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

正确。

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

  

ArrayDataModel(E [] array)

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

使用ListDataModel代替

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

答案 2 :(得分:0)

我希望你在谈论javax / faces / DataModel http://docs.oracle.com/javaee/5/api/javax/faces/model/DataModel.html

如果要将List作为数据模型,请尝试使用ListDataModel http://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;

    }

希望这有帮助。