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