| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/04/2010 13:32:57
|
bland
JavaEvangelist
Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline
|
Olá a todos!
Estou tendo alguns problemas para fazer essa integração. Eu tenho um ManagedBean e dentro dele eu tenho um serviço, que deveria ser populado pelo Spring. Só que sempre que chega no meu ManagedBean, o serviço está nulo. Assim como o EntityManager do serviço também. Vou postar alguns fontes.
O meu MangedBean :
Eu não tenho declarado esse serviço no applicationContext, mas tem essa linha lá: <context:component-scan base-package="com.monteirosti" />
O applicationContext.xml :
O serviço:
Bem, de antemão, obrigado pela ajuda, mas o que eu posso estar fazendo de errado para que o preenchimento dos objetos não esteja sendo feito?
Um abraço.
|
http://www.twitter.com/almeidafabiano
Fabiano Almeida. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 10:26:48
|
maiconramones
JavaGuru
![[Avatar]](/images/avatar/a8c5a73459631beb2cbe6af3c74628e8.jpg)
Membro desde: 04/12/2007 11:09:19
Mensagens: 210
Localização: Sapucaia do Sul
Offline
|
bland sei que o tópico é antigo, mas você conseguiu corrigir esse problema? Se sim, como?
Estou tendo o mesmo problema.
Abraço
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 10:47:52
|
bland
JavaEvangelist
Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline
|
Olá Maicon, tudo bem?
Foi muito bom você "reativar" este tópico, pois eu nem lembrava mais que esse tópico existia.
Bem, respondendo a sua pergunta, sim, consegui resolver sim. Para contextualizar, o Spring tem o seu gerenciamento dos beans, e, pelo que entendi após pesquisar bastante, o JSF 2.0 também. Ou seja, quando anotamos uma classe como @ManagedBean, até o momento, o JSF 2 não consegue enxergar os beans do Spring implicitamente. Sendo assim, é necessário que você faça uma injeção utilizando uma outra anotação, a @ManagedProperty (do pacote javax.faces.bean.ManagedProperty).
Pronto, essa foi a explicação da teoria. Na prática, eu criei um arquivo xml para os meus serviços (que serão gerenciados pelo Spring) e coloquei apenas isso:
Ou seja, o pacote base para a busca dos serviços é a implementação desses serviços. E não as interfaces.
Já no meu ManagedBean ficou dessa forma:
Com essa anotação, o JSF 2 enxerga que será feita uma "injeção explícita" ao bean no qual você está anotando. Essa anotação (@ManagedProperty) utiliza do padrão JavaBeans, sendo assim, será necessário ter o método set do seu serviço na sua classe ManagedBean. Observe que o parâmetro utiliza Expression Language, pois ele busca essa informação dentro da própria aplicação, algo como um repositório de beans, por exemplo (não sei o nome exatamente, mas a ideia é essa). E para que essa integração funcione corretamente é necessário colocar no faces-config.xml a seguinte linha:
E, claro, configurar corretamente o seu web.xml. Acho que seja isso. Não me lembro de mais nenhum detalhe. Caso tenha mais dúvidas, posta aqui que tentarei te ajudar quando for possível.
Um grande abraço.
|
http://www.twitter.com/almeidafabiano
Fabiano Almeida. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 11:20:14
|
maiconramones
JavaGuru
![[Avatar]](/images/avatar/a8c5a73459631beb2cbe6af3c74628e8.jpg)
Membro desde: 04/12/2007 11:09:19
Mensagens: 210
Localização: Sapucaia do Sul
Offline
|
Opa, bland.
Fiz como você falou e funcionou.
Uma outra sacanagem que tinha utilizado para injetar as dependências era anotar o meu @ManagedBean também com @Controller mas ficava estranho ter duas anotações com o mesmo objetivo, ficava assim:
E depois @Inject em cima da propriedade do ManagedBean para injetar os serviços...
Uma observação: <aop:aspectj-autoproxy /> não foi preciso colocar isso no xml, o que esse atributo faz?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 13:58:52
|
bland
JavaEvangelist
Membro desde: 10/12/2004 09:36:35
Mensagens: 330
Offline
|
Maicon,
Abstraia essa linha. Foi um copy / paste que fiz. Irei até remover dos meus xml's.
Quanto a solução, existem diversas. Essa que mostrei achei a mais simples.
E pelo que você falou, também, né?
Um grande abraço e bons códigos.
|
http://www.twitter.com/almeidafabiano
Fabiano Almeida. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2010 15:03:46
|
maiconramones
JavaGuru
![[Avatar]](/images/avatar/a8c5a73459631beb2cbe6af3c74628e8.jpg)
Membro desde: 04/12/2007 11:09:19
Mensagens: 210
Localização: Sapucaia do Sul
Offline
|
Valeu pela força Brother.
Abraço
|
|
|
 |
|
|