所以这是我的代码:
<h:form>
<p:dataTable var="customer" value="#{customersTableBackingBean.allCustomers}">
<p:column headerText="First Name">
<h:outputText value="#{customer.contactFirstName}" />
</p:column>
<p:column headerText="City">
<h:outputText value="#{customer.city}" />
</p:column>
</p:dataTable>
</h:form>
支持豆:
package com.tugay.maythirty.model;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.Serializable;
import java.util.List;
@Named
public class CustomersTableBackingBean implements Serializable {
@Inject
CustomersService customersService;
public List<Customers> getAllCustomers(){
return customersService.getAllCustomers();
}
public String sayHello(){
return "Hello from a managed bean!";
}
}
服务:
import javax.inject.Inject;
import java.io.Serializable;
import java.util.List;
public class CustomersService implements Serializable {
@Inject
private CustomersDao customersDao;
public List<Customers> getAllCustomers(){
boolean userLoggedIn = true;
if(userLoggedIn){
return customersDao.getAllCustomers();
}
else{
return null;
}
}
}
道:
import javax.persistence.*;
import java.util.List;
public class CustomersDao {
@PersistenceContext(unitName = "Persistence")
private EntityManager em;
public List<Customers> getAllCustomers() {
TypedQuery<Customers> query = em.createQuery("SELECT c FROM Customers c", Customers.class);
List<Customers> allCustomers = query.getResultList();
return allCustomers;
}
public void addCustomer(String customerName, String city){
Customers customer = new Customers();
customer.setCustomerName(customerName);
customer.setCity(city);
em.persist(customer);
}
}
实体:
@Entity
public class Customers {
//relevant code here...
所以这在 Glassfish 服务器上运行,并且运行得很好。我可以从数据库中获取数据并在 index.xhtml 上查看它。
我的支持是一个@Named bean。所以@Named 使得它可以从 EL 访问。
但是,它没有任何其他注释,例如 Statless 或 Stateful..那么这个 backing bean 的“状态”是什么?这个bean的生命周期不是由容器管理的吗?
此外,如您所见,我正在使用 @Inject 向我的 BackingBean 注入一个 Service,向我的 Service 注入一个 Dao,向我的 Dao 注入一个实体……这些是 EJB 吗?如果这些 @Stateless 或 @Stateful 像这样工作得很好,我为什么要制作它们?
为什么我会/应该制作@Stateful 或@Statless 这些bean 中的任何一个?