2011-05-02 6 views
1

私はJSF初心者で、データテーブルを使用してデータを表示する際に問題があります。JSF DatatableはOnetoMany関係オブジェクトの値を取得できませんか?

<h:dataTable id="dt_contract_list" value="#{customerBean.customer.contracts}" var="item"> 
    <h:column> 
     <f:facet name="header"> 
      <h:outputText value="Contract Identifier"/> 
     </f:facet> 
     <h:outputText style="" value="#{item.contractIdentifier}"></h:outputText> 
    </h:column> 
</h:dataTable> 

エンティティBean customerdetail.jsp:

@Entity 
@NamedQueries({ 
    @NamedQuery(name="getCustomerByName", query="SELECT customer FROM Customer customer WHERE customer.name = :name"), 
    @NamedQuery(name="getAllCustomer", query="SELECT customer FROM Customer customer") 
}) 
public class Customer { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int id; 
    private String name; 

    @OneToMany(targetEntity = Contract.class, 
       mappedBy = "customer", 
       cascade = CascadeType.ALL, 
       fetch=FetchType.EAGER) 
    private List<Contract> contracts = new ArrayList<Contract>(); 

    public Customer() { 
     super(); 
    } 

    public int getId() { 
     return this.id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return this.name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<Contract> getContracts() { 
     return this.contracts; 
    } 

    @Override 
    public boolean equals(Object object) { 
     if (this.getClass().isInstance(object)) { 
      return this.getName().equals(((Customer) object).getName()); 
     } else { 
      return false; 
     } 
    } 
} 
Customer.javaを私はお客様

JSFページのデータテーブルに割り当てられた契約(複数可)を表示したい

:これらは私のシナリオです

BackingBean:CustomerBean.java

public class CustomerBean implements Serializable { 

    @EJB 
    private CustomerControllerLocal customerController; 

    private Customer customer; 

    public CustomerBean() { 
     customer = new Customer(); 
    } 

    public String createCustomer() { 
     // create customer 
    } 

    public String updateCustomer() { 
     // update customer 
    } 

    public String deleteCustomer() { 
     // delete custoer 
    } 

    public String getCustomerByName() { 
     try { 
      customerController.getCustomerByName(customer.getName()); 
     } catch (NotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return "customer_got"; 
    } 

    public String assignContractsToCustomer() { 
     // assign contract to customer 
    } 

    public Customer getCustomer() { 
     return customer; 
    } 

    public void setCustomer(Customer customer) { 
     this.customer = customer; 
    } 
} 

エラーはなく、ビジネスロジックレイヤー、データレイヤー全体がテストされ、正常に動作しましたが、結果はnullです(そしてそうすべきではありません)。例外の兆候もありません。誰も私がこれに間違っていることを理解するのを助けることができますか? T___T

答えて

0

あなたのfaceletコードは大丈夫です。

あなたのエンティティクラスには、疑わしいものが1つあります。

自分のプロジェクト(ネットビーンによって生成されたクラス)のエンティティクラスでは、リレーションシップリストは決して初期化されません。私はJPAの専門家ではありませんが、初期化部分がなければ試すことができます。

関連する問題