JSF / Entity From Database不起作用

时间:2014-01-18 16:16:39

标签: jsf jpa jsf-2 netbeans

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

所以我只是创建了一个新的Java企业应用程序,来自示例数据库(Customer)的实体类,一个会话bean CustomerManager,以及一个JSFManagedBean和一个JSF页面的Web项目。

在我的JSF页面的主体中,我在<h1>Clients list</h1>之后添加了一个JSF数据表来自实体(使用NetBeans调色板)。这是我的问题:“客户列表”后页面上没有打印数据。但是当我进入服务&gt;数据库&gt;样本时,我完全看到所有条目。

我不知道出了什么问题......谢谢你的帮助。

编辑:这是我的代码。

在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);
    }
}

Web:这是我的代码。 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;
    }
}

我的CustomerList页面:

    <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>

1 个答案:

答案 0 :(得分:-1)

试试这个可能对你有所帮助。

<h:dataTable value="#{customerMBean.customerList}" var="item">

取代

<h:dataTable value="#{customerMBean.allCustomers}" var="item">

对于Balacus

 <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
}