Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自数据库的JSF/实体不';行不通_Jsf_Jpa_Jsf 2_Netbeans - Fatal编程技术网

来自数据库的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调色板)。我的问题是:在“客户列表”之后的页面上

我正在使用EJB/JPA/JSF学习Web/J2EE,因此我遵循了一个关于NetBeans 7.3/Glassfish 3.1.2的简单教程

因此,我简单地创建了一个新的Java企业应用程序、来自示例数据库(Customer)的实体类、一个会话bean CustomerManager,并在web项目中创建了一个JSFManagedBean和一个JSF页面

在我的JSF页面主体中,我在
客户列表之后添加了一个来自实体的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-我给他一个替代品,他也可以尝试使用变量,但很明显要为您初始化变量,我正在编辑上述代码,并告诉我它有什么问题。