来自数据库的JSF/实体不';行不通
我正在使用EJB/JPA/JSF学习Web/J2EE,因此我遵循了一个关于NetBeans 7.3/Glassfish 3.1.2的简单教程 因此,我简单地创建了一个新的Java企业应用程序、来自示例数据库(Customer)的实体类、一个会话bean CustomerManager,并在web项目中创建了一个JSFManagedBean和一个JSF页面 在我的JSF页面主体中,我在来自数据库的JSF/实体不';行不通,jsf,jpa,jsf-2,netbeans,Jsf,Jpa,Jsf 2,Netbeans,我正在使用EJB/JPA/JSF学习Web/J2EE,因此我遵循了一个关于NetBeans 7.3/Glassfish 3.1.2的简单教程 因此,我简单地创建了一个新的Java企业应用程序、来自示例数据库(Customer)的实体类、一个会话bean CustomerManager,并在web项目中创建了一个JSFManagedBean和一个JSF页面 在我的JSF页面主体中,我在客户列表之后添加了一个来自实体的JSF数据表(带有NetBeans调色板)。我的问题是:在“客户列表”之后的页面上
客户列表之后添加了一个来自实体的JSF数据表(带有NetBeans调色板)。我的问题是:在“客户列表”之后的页面上没有打印数据。但当我进入“服务>数据库>示例”时,我完全可以看到所有条目
我不知道怎么了。。。谢谢你的帮助
编辑:这是我的代码
在EJB中,CustomerManager.java:
@Stateless
@LocalBean
public class CustomerManager {
@PersistenceContext(unitName = "CustomerApplication-ejbPU")
private EntityManager em;
public List<Customer> getAllCustomers() {
Query q = em.createNamedQuery("Customer.findAll");
return q.getResultList();
}
public Customer update(Customer c) {
return em.merge(c);
}
public void persist(Object o) {
em.persist(o);
}
}
@无状态
@本地豆
公共类CustomerManager{
@PersistenceContext(unitName=“CustomerApplication ejbPU”)
私人实体管理者;
公共列表getAllCustomers(){
Query q=em.createNamedQuery(“Customer.findAll”);
返回q.getResultList();
}
公共客户更新(客户c){
返回em.merge(c);
}
公共void持久化(对象o){
em.o;
}
}
网站:这是我的代码。CustomerMBean:
@ManagedBean
@ViewScoped
public class CustomerMBean {
private List<Customer> customerList;
@EJB
private CustomerManager manager;
public CustomerMBean() {
}
public List<Customer> getAllCustomers() {
return manager.getAllCustomers();
}
public String showDetails(int idCustomer) {
return "CustomerDetails?idCustomer=" + idCustomer;
}
}
@ManagedBean
@视域
公共类CustomerMBean{
私人名单客户名单;
@EJB
私人客户经理;
公共CustomerMBean(){
}
公共列表getAllCustomers(){
returnmanager.getAllCustomers();
}
公共字符串showDetails(int-idCustomer){
返回“CustomerDetails?idCustomer=“+idCustomer;
}
}
和我的客户列表页面:
<h:body>
<h1>Liste des clients</h1>
<f:view>
<h:form>
<h1><h:outputText value="List"/></h1>
<h:dataTable value="#{customerMBean.allCustomers}" var="item">
<h:column>
<f:facet name="header">
<h:outputText value="CustomerId"/>
</f:facet>
<h:outputText value="#{item.customerId}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Name"/>
</f:facet>
<h:outputText value="#{item.name}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Addressline1"/>
</f:facet>
<h:outputText value="#{item.addressline1}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Addressline2"/>
</f:facet>
<h:outputText value="#{item.addressline2}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="City"/>
</f:facet>
<h:outputText value="#{item.city}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="State"/>
</f:facet>
<h:outputText value="#{item.state}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Phone"/>
</f:facet>
<h:outputText value="#{item.phone}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Fax"/>
</f:facet>
<h:outputText value="#{item.fax}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Email"/>
</f:facet>
<h:outputText value="#{item.email}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CreditLimit"/>
</f:facet>
<h:outputText value="#{item.creditLimit}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Zip"/>
</f:facet>
<h:outputText value="#{item.zip}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="DiscountCode"/>
</f:facet>
<h:outputText value="#{item.discountCode}"/>
</h:column>
</h:dataTable>
</h:form>
</f:view>
</h:body>
客户名单
试试这个,它可能会对你有帮助
<h:dataTable value="#{customerMBean.customerList}" var="item">
代替
<h:dataTable value="#{customerMBean.allCustomers}" var="item">
巴拉库斯酒店
<h:dataTable value="#{employeeMBean.customerList}" var="item">
而ManageBean是
@ManagedBean
@ViewScoped
public class CustomerMBean {
private List<Customer> customerList;
@EJB
private CustomerManager manager;
public CustomerMBean() {
}
@PostConstruct
public void getAllCustomers() {
customerList= manager.findAll();
}
//setter getter for customer list
}
@ManagedBean
@视域
公共类CustomerMBean{
私人名单客户名单;
@EJB
私人客户经理;
公共CustomerMBean(){
}
@施工后
public void getAllCustomers(){
customerList=manager.findAll();
}
//客户列表的setter-getter
}
您的方法即使微不足道,也似乎是正确的。请显示客户实体类。在Netbeans的Output选项卡下,查看GF服务器日志……你看到了什么吗?我看了一下,似乎与我的问题无关:/除了具体的问题之外,在getter方法中执行业务逻辑是一种糟糕的做法。你看,这简直是胡说八道。显然,您从未真正从头编写过一些JSF代码。请停止将胡乱猜测作为答案。最好使用注释。@BalausC-我给他一个替代品,他也可以尝试使用变量,但很明显要为您初始化变量,我正在编辑上述代码,并告诉我它有什么问题。