Spring + MyFaces + Facelets: Bean não injetado

2 respostas
marcoantoniorocha

Pessoal,

Terminei de atualizar as bibliotecas do meu projeto para utilizar Spring, Facelets e Myfaces (Tomahawk).
Estranhamente, meu DAO não está mais sendo injetado na camada de negócios, apesar de não aparecer nada de errado no log.

Vou colocar a seguir os trechos mais relevantes de cada arquivo de configuração:

web.xml:
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/context-datasource.xml 
        /WEB-INF/context-dao.xml
        /WEB-INF/context-bu.xml 
        /WEB-INF/context-security.xml
        /WEB-INF/context-propertyConfigurer.xml
    </param-value>
</context-param>
faces-config.xml:
<application>
    ...
    <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
    ...
</application>

...

<!-- UI bean para UI de Notícia -->
<managed-bean>
    <managed-bean-name>noticiaUI</managed-bean-name>
    <managed-bean-class>projeto.ui.NoticiaUI</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
    
    <managed-property>
        <property-name>noticiasBU</property-name>
        <value>#{noticiasBU}</value>
    </managed-property>
    
    <managed-property>
        <property-name>initialized</property-name>
        <value>true</value>
    </managed-property>        
    
</managed-bean>
context-bu.xml:
<bean 
    id="noticiasBU" 
    class="projeto.bu.NoticiasBUImpl">
        
    <property name="produtoConsultaDAO">
        <ref bean="produtoConsultaDAO"/>
    </property>
    
    <property name="secaoDAO">
        <ref bean="secaoDAO"/>
    </property>
    
    <property name="noticiaDAO">
        <ref bean="noticiaDAO" />
    </property>
    
</bean>

O problema está no noticiaBU, os DAOs não são injetados. Todos ficam nulos

Alguém tem alguma sugestão?

Obrigado,

2 Respostas

nosredna

As DAOImpls estão sendo declarados no AppContext também? Só uma dica, você não precisa colocar os Beans no Faces, você pode deixar o spring gerenciar tudo =). e no Faces deixa apenas as regras de navegação e fluxo, assim o arquivo fica mais limpo =)…

marcoantoniorocha

Os beans que estão no face são os UI Beans somente…

Os DAOImpl estão declarados no context-dao.xml
Estranho que fiz um teste sem usar o noticiasBU e tudo foi criado corretamente…

Criado 31 de julho de 2008
Ultima resposta 31 de jul. de 2008
Respostas 2
Participantes 2