2つのJavaクラスを1つのDatatableコンポーネントにバインドする際に問題が発生しました。2つのマネージド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);
}
}
}
}
}
リストからデータを取得する方が便利だと思ったので、セットからリストに変換しています。