如何在Datatable中绑定两个类

时间:2013-02-11 09:43:46

标签: java jsf datatable

我将两个java类绑定到一个Datatable组件时遇到问题。 我有两个托管bean产品和订单

产品来源:

public class Product {

    private Integer id;
    private String kategoria;
    private String symbol;
    private String opis;
    private Double cena;

    //getters and setters
    //.....
    //hashCode, equals methods

}

和订单来源:

public class Order {

    private Product produkt;
    private Integer quantity;   

    public Order() {}

    public Order(Product product, Integer quantity) {
        this.produkt = product;
        this.quantity = quantity;
    }


    public void setProduct(Product produkt) {
        this.produkt = produkt;
    }

    public Product getProdukt() {
        return produkt;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    public Integer getQuantity() {
        return quantity;
    }
}

我的问题是:如何将此类Order绑定到<h:dataTable />组件以获得Poduct值和数量值。我用setOrder和getOrder方法创建了ProductBean类

public List<OrderLine> getList() {
    List<OrderLine> l = new ArrayList<OrderLine>();
    for(OrderLine ol : list) {
        l.add(ol);
    }
    return l;
}

public void setList(Set<OrderLine> list) {
    if (this.list.isEmpty() )
        this.list = list;
    else {
        Iterator<OrderLine> it = this.list.iterator();
        for(OrderLine p : list) {
            while(it.hasNext()) {
                if(it.next().equals(p)) {
                    this.list.add(p);                    
                }
            }
        }
    }
}

我正在从集合转换到列表,因为我认为从列表中检索数据会更方便。

1 个答案:

答案 0 :(得分:2)

为什么不想使用通用方法?

<h:dataTable value="#{productBean.getList}" var="o">

    <h:column>
        #{o.quantity}
    </h:column>

    <h:column>
        #{o.produkt.kategoria}
    </h:column>

    ...

    <h:column>
        #{o.produkt.cena}
    </h:column>

</h:dataTable>

您可以通过订单对象访问产品字段。

UPD

你做了什么:

  • 为订单和产品类的所有字段指定getter和setter
  • 将getter和setter指定为您的订单集
  • 创建此套装,将所有订单放在那里
  • 在我展示之前迭代它