1

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);                    
                }
            }
        }
    }
}

リストからデータを取得する方が便利だと思ったので、セットからリストに変換しています。

4

1 に答える 1

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>

注文オブジェクトを介して製品フィールドにアクセスできます。

更新

あなたは何をしましたか:

  • Order クラスと Product クラスのすべてのフィールドに getter と setter を指定する
  • 一連の注文にゲッターとセッターを指定する
  • このセットを作成し、すべての注文をそこに入れます
  • 前に示したように繰り返します
于 2013-02-11T10:10:07.773 に答える