PrimeFaces 3.4.1 Spring 3.2.0RC Hibernate 4.0.1

时间:2012-11-14 16:54:39

标签: spring hibernate jsf primefaces

我想用PrimeFaces,Spring和Hibernate开发我的应用程序,我采用这个例子,但确实有效。 我不知道如何配置applicationContext.xml,web.xml,faces-config.xml,我不知道我是否错过了jar。

我有这个错误:

  

javax.el.PropertyNotFoundException:/index.xhtml @ 14,50   value =“#{customer.lists}”:在类型上找不到属性“列表”   comtic.scrum.managedBean.CustomerBean

我使用tomcat 7和JBoss Dev Studio,primeFaces 3.4.1,spring-3.2.0.RC1,hibernate-release-4.0.1.Final

我的表是客户(customerId,name,address,createdDate)列

这是WEB-INF / lib中的jar列表:

  
      
  1. ANTLR-2.7.7.jar
  2.   
  3. 共annotations.jar
  4.   
  5. 公地beanutils.jar
  6.   
  7. 公地collections.jar
  8.   
  9. 公地集合-3.2.1.jar
  10.   
  11. 公地digester.jar
  12.   
  13. 公地logging.jar
  14.   
  15. DOM4J-1.6.1.jar
  16.   
  17. 冬眠-公地注解-4.0.1.Final.jar
  18.   
  19. 冬眠核-4.0.1.Final.jar
  20.   
  21. 冬眠-JPA-2.0-API-1.0.1.Final.jar
  22.   
  23. 了Javassist-3.15.0-GA.jar
  24.   
  25. 的JBoss-测井3.1.0.CR2.jar
  26.   
  27. 的JBoss-事务api_1.1_spec-1.0.0.Final.jar
  28.   
  29. JS​​F的API-2.1.6.jar
  30.   
  31. JS​​F的参数impl-2.1.6.jar
  32.   
  33. jslt.jar
  34.   
  35. MySQL的连接器的Java-5.0.8-bin.jar
  36.   
  37. primefaces-3.4.1.jar
  38.   
  39. 弹簧AOP-3.2.0.RC1.jar
  40.   
  41. 弹簧方面-3.2.0.RC1.jar
  42.   
  43. 弹簧豆-3.2.0.RC1.jar
  44.   
  45. 弹簧上下文3.2.0.RC1.jar
  46.   
  47. 弹簧上下文支持-3.2.0.RC1.jar
  48.   
  49. 弹簧芯3.2.0.RC1.jar
  50.   
  51. 弹簧表达-3.2.0.RC1.jar
  52.   
  53. 弹簧仪器3.2.0.RC1.jar
  54.   
  55. 弹簧仪器Tomcat的3.2.0.RC1.jar
  56.   
  57. 弹簧JDBC-3.2.0.RC1.jar
  58.   
  59. 弹簧JMS-3.2.0.RC1.jar
  60.   
  61. 弹簧ORM-3.2.0.RC1.jar
  62.   
  63. 弹簧OXM-3.2.0.RC1.jar
  64.   
  65. 弹簧支柱-3.2.0.RC1.jar
  66.   
  67. 弹簧 - 测试 - 3.2.0.RC1.jar
  68.   
  69. 弹簧-TX-3.2.0.RC1.jar
  70.   
  71. 弹簧网络3.2.0.RC1.jar
  72.   
  73. 弹簧webmvc-3.2.0.RC1.jar
  74.   
  75. 弹簧webmvc的portlet-3.2.0.RC1.jar
  76.   
  77. standard.jar
  78.   

这是Customer.java

import java.util.Date;

/**
 * Customer generated by hbm2java
 */
public class Customer implements java.io.Serializable {

    private Integer customerId;
    private String name;
    private String address;
    private Date createdDate;

    public Customer() {
    }

    public Customer(String name, String address, Date createdDate) {
        this.name = name;
        this.address = address;
        this.createdDate = createdDate;
    }

    public Integer getCustomerId() {
        return this.customerId;
    }

    public void setCustomerId(Integer customerId) {
        this.customerId = customerId;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return this.address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Date getCreatedDate() {
        return this.createdDate;
    }

    public void setCreatedDate(Date createdDate) {
        this.createdDate = createdDate;
    }

}

CustomerDAO.java:

import java.util.List;

import comtic.scrum.customer.model.Customer;

public interface CustomerDao{

    void addCustomer(Customer customer);

    List<Customer> findAllCustomer();

}

CustomerDaoImp.java

import java.util.Date;
import java.util.List;

import comtic.scrum.customer.dao.CustomerDao;
import comtic.scrum.customer.model.Customer;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class CustomerDaoImpl extends 
       HibernateDaoSupport implements CustomerDao{

    public void addCustomer(Customer customer){

        customer.setCreatedDate(new Date());
        getHibernateTemplate().save(customer);

    }

    public List<Customer> findAllCustomer(){

        return getHibernateTemplate().find("from Customer");

    }
}

CustomerService.java

import java.util.List;

import comtic.scrum.customer.model.Customer;

public interface CustomerService {
    void addCustomer(Customer customer);

    List<Customer> findAllCustomer();

}

CustomerServiceImp.java

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import comtic.scrum.customer.dao.CustomerDao;
import comtic.scrum.customer.model.Customer;
import comtic.scrum.customer.service.CustomerService;

public class CustomerServiceImp extends 
HibernateDaoSupport  implements CustomerService {

    CustomerDao customerDao;

    public CustomerDao getCustomerDao() {
        return customerDao;
    }

    public void setCustomerDao(CustomerDao customerDao) {
        this.customerDao = customerDao;
    }

    public void addCustomer(Customer customer){

        customerDao.addCustomer(customer);

    }

    public List<Customer> findAllCustomer(){

        return customerDao.findAllCustomer();
    }

}

CustomerBean.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="customerService" 
         class="comtic.scrum.customer.service.imp.CustomerServiceImp" >
        <property name="customerDao" ref="customerDao" />
    </bean>

    <bean id="customerDao" 
         class="comtic.scrum.customer.dao.imp.CustomerDaoImp" >
        <property name="sessionFactory" ref="sessionFactory">
        </property>

    </bean>

</beans>

CustomerBean.java

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import comtic.scrum.customer.model.Customer;
import comtic.scrum.customer.service.CustomerService;

public class CustomerBean implements Serializable {
    //DI via Spring
        CustomerService customerService;

        public String name;
        public String address;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAddress() {
            return address;
        }

        public void setAddress(String address) {
            this.address = address;
        }



        //get all customer data from database
        public List<Customer> customerList(){
            return customerService.findAllCustomer();
        }

        //add a new customer data into database
        public String addCustomer(){

            Customer cust = new Customer();
            cust.setName(getName());
            cust.setAddress(getAddress());

            customerService.addCustomer(cust);

            clearForm();

            return "";
        }

        //clear form values
        private void clearForm(){
            setName("");
            setAddress("");
        }

        public comtic.scrum.customer.service.CustomerService getCustomerService() {
        return customerService;
    }

        public void setCustomerService(
            comtic.scrum.customer.service.CustomerService customerService) {
        this.customerService = customerService;
    }


}

DataSource.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean 
   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="location">
     <value>WEB-INF/classes/config/database/db.properties</value>
   </property>
</bean>

  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
  </bean>

</beans>

HibernateSessionFactory.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <!-- Hibernate session factory -->
<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="dataSource">
      <ref bean="dataSource" />
    </property>

    <property name="mappingResources">
    <list>
          <value>comtic/scrum/customer/hibernate/Customer.hbm.xml</value>
    </list>
     </property>

    <property name="hibernateProperties">
       <props>
         <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
         <prop key="hibernate.show_sql">true</prop>
       </props>
    </property>     

</bean>
</beans>

faces-config.xml中

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">

 <managed-bean>
  <managed-bean-name>customer</managed-bean-name>
  <managed-bean-class>comtic.scrum.managedBean.CustomerBean</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
  <managed-property>
   <property-name>customerService</property-name>
   <property-class>comtic.scrum.customer.service.CustomerService</property-class>
   <value/>
  </managed-property>
 </managed-bean>

 <application>
  <resource-bundle>
   <base-name>resources</base-name>
   <var>msgs</var>
  </resource-bundle>
 </application>
</faces-config>

的web.xml

<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 <display-name>Template</display-name>
 <!-- Spring Context Configuration' s Path definition -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext.xml</param-value>
 </context-param>
 <!-- Project Stage Level -->
 <context-param>
  <param-name>javax.faces.PROJECT_STAGE</param-name>
  <param-value>Development</param-value>
 </context-param>
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.faces</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
  <welcome-file>index.xhtml</welcome-file>
 </welcome-file-list>
</web-app>

的index.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:pf="http://primefaces.org/ui">

<h:head>

</h:head>
<h:body>
    <h1>PrimeFaces + Spring + Hibernate Example</h1>
    <pf:dataTable value="#{customer.lists}" var="c">
        <h:column>
            <h:outputText value="customerId"/>
        </h:column>
        <h:column>
            <h:outputText value="#{c.name}"/>
        </h:column>
        <h:column>
            <h:outputText value="#{c.address}"/>
        </h:column>
        <h:column>
            <h:outputText value="#{c.createdDate}"/>
        </h:column>     
    </pf:dataTable>

    <h2>Add New Customer</h2>
    <h:form>
        <pf:panelGrid columns="3" >
            Name :              
                    <pf:inputText id="name" label="Name" required="true" size="20" value="#{customer.name}">                        
                    </pf:inputText>                 
                <h:message for="name" style="color:red" />

                Address :               
                    <pf:inputTextarea cols="30" id="address" label="Address" required="true" rows="10" value="#{customer.address}">                     
                    </pf:inputTextarea>
                <h:message for="address" style="color:red" />               
            <pf:button outcome="#{customer.addCustomer}" value="Submit">

            </pf:button>
        </pf:panelGrid>
    </h:form>   
</h:body>
</html>

感谢的

1 个答案:

答案 0 :(得分:1)

是否真的有必要使用Spring / Hibernate / XML代码来演示问题?当只有一个XHTML文件和一个没有Spring / Hibernate / XML噪声的托管bean类时,你会遇到完全相同的问题。学习将问题分为1或2页。你的问题差不多有10页......

无论如何,你得到的例外

  

javax.el.PropertyNotFoundException:/index.xhtml @ 14,50 value =“#{customer.lists}”:在comtic.scrum.managedBean.CustomerBean类型中找不到属性'列表'

只是试图告诉您CustomerBean类缺少getter方法getLists()。添加它并确保它返回List<Customer>

public List<Customer> getLists() {
    return lists;
}

对于具体问题,

无关,属性名称中的复数s很奇怪。它只返回一个列表,对吗?如果我是你,我会用#{customer.list}吸气器将其重命名为getList()