[RESOLVIDO] Problemas com jsf 1.2 Spring 3.0

5 respostas
EuclidesFilizola

Boa tarde pessoal, estou tentando usar o dao generico com spring e jsf 1.2 Porém não consigo injetar o entityMaanger. Abaixo vão os meus códigos:

spring.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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"

      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xs"	
      default-autowire="byName">

    <context:component-scan base-package="br.com.ciclo" />

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
      <property name="persistenceUnitName" value="ciclo"/>
    </bean>

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
  <tx:annotation-driven transaction-manager="transactionManager" />
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/ciclo" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    
    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    
    <filter>
        <filter-name>openEntityManager</filter-name>
        <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter </filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>openEntityManager</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST </dispatcher>
        <dispatcher> FORWARD</dispatcher>
        <dispatcher> INCLUDE</dispatcher>
    </filter-mapping>
    
    
    
    <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>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>

facesconfig.xml

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    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-facesconfig_1_2.xsd">
    <application>
        <el-resolver> org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver>
         
         <locale-config>  
            <default-locale>pt_br</default-locale>  
            <supported-locale>pt_br</supported-locale>  
        </locale-config>  
        <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
    </application>
    <managed-bean>
        <managed-bean-name>cicloMBean</managed-bean-name>
        <managed-bean-class>br.com.ciclo.mBean.CicloMBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
</faces-config>

5 Respostas

Hebert_Coelho

E qual seu erro?

EuclidesFilizola

O erro é o seguinte.

Aqui está meu Mbean

@Component(value="cicloMBean")
@Scope("request")
public class CicloMBean {

   private Campeonato campeonato;
   private Entidade entidade;
   private Etapa etapa;

@Autowired
   CampeonatoDAO campeonatoDao;
   @Autowired
   EtapaDAO etapaDao;
   @Autowired
   EntidadeDAO entidadeDao;
   @Autowired
   ProvaDAO provaDao;
   @Autowired
   AtletaDAO atletaDao;

..........

public [b]List<SelectItem> getListaEntidades()[/b] {
      
      List<SelectItem> result = new ArrayList<SelectItem>();
      List<Entidade> listaEntidadesTemp = entidadeDao.findAll();
	for (Entidade entidade : listaEntidadesTemp) {
	   result.add(new SelectItem(entidade.getId(),entidade.getNome()));
	}
      listaEntidades = result;
     return listaEntidades;
    }

Veja que eu tenho esse método “getEntidades”, e ele utiliza o entidadeDao. E então todos os meus ‘daos’ vem NULL.

Aqui está meu GenericDAo.

@Transactional
public class GenericDAO<T, ID extends Serializable> implements IDao<T, ID> {

private Class<T> persistentClass;
 	
 	@PersistenceContext
 	protected EntityManager entityManager;

        @SuppressWarnings("unchecked")
    public GenericDAO() {
        this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
                                .getGenericSuperclass()).getActualTypeArguments()[0];
    }

    public Class<T> getPersistentClass() {
        return persistentClass;
    }

.....................

E aqui um exemplo de dao comum meu.

@Transactional
public class EntidadeDAO extends GenericDAO<Entidade,Serializable> {

  @Transactional
    public List<Entidade> findAll() {
      Query query=entityManager.createQuery("select ent from Entidade ent");
      List<Entidade> lista = query.getResultList();
     return lista;
    }

EuclidesFilizola

meus daos estão vindo NULL

R

Tem que anotar EntidadeDAO com @Component também.

EuclidesFilizola

Bom dia pessoal,

resolvi o problema. Não sei se estou certo mas, me parece que o jsf 1.2 não rola muito bem com o Spring 3.0. E então oq eu fiz? Eu coloquei o Spring 2.5 , com o jsf 1.2. E todas as minhas classes DAO eu mudei para “Service”. OU seja, todas agora são EntidadeService, … etc. E todas tem a anotação @Service.

Dessa forma funcionou. Mas o meu “applicationContext” não mudou nada.

Mais tarde mostro os códigos, pois não estou no notebook agora.

Abraços.

Criado 27 de maio de 2012
Ultima resposta 28 de mai. de 2012
Respostas 5
Participantes 3