| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 12:01:41
|
Javas_Man
Debugger
Membro desde: 11/04/2006 10:45:30
Mensagens: 65
Offline
|
PessoALL,
Estou com o seguinte problema.
Eu tenho um backbean que está sendo utilizando como superclasse. Nele tenho alguns métodos que gostaria de utilizar nas minhas classes. Inclusive um atributo que está sendo injetado pelo Spring.
Estou querendo utilizar esse atributo injetado na classe filha. Porém, quando tento acessar, recebo um NPE.
O que está acontecendo é que o SPring não injeta o atributo quando estou utilizando um método de acesso na classe filha através de herança.
A configuração está funcionando perfeitamente, pois já fiz os testes na superclasse.
Alguém tem alguma idéia ?!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 18:40:22
|
afamorim
JavaEvangelist
![[Avatar]](/images/avatar/0d7f9017fbda691900187b22404b8a1f.png)
Membro desde: 15/07/2005 09:19:04
Mensagens: 453
Localização: Salvador - Ba
Offline
|
Rapaz eu faço isso direto e funciona, observe apenas se os set's estão como public na sua super classe, o spring usa reflexão para fazer isso então basta que localise o seu set que tudo funcionará perfeitamente.
para vc testar basta vc colocar um set na sua classe filha do atributo que vc quer modificar
tipo
se isso compilar pode colocar no spring que vai funcionar.
|
se vc não quer ficar alegre, problema seu a vida segue!
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 19:26:07
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
bahh, normalmente não precisa não ...
tu pode postar aqui a parte do XML onde o bean esta registrado no spring e/ou JSF?
valeus ...
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 21:20:39
|
Javas_Man
Debugger
Membro desde: 11/04/2006 10:45:30
Mensagens: 65
Offline
|
Segue aí...
Agora o meu applicaionContext
Na minha superclasse tem um método que eu passo um parâmetro. E eu gostaria que as classes filhas herdassem este método. Nesse caso, o UsuarioBeanConsultar irá herdar o método service de UsuarioBean.
Valeu !!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 22:27:08
|
afamorim
JavaEvangelist
![[Avatar]](/images/avatar/0d7f9017fbda691900187b22404b8a1f.png)
Membro desde: 15/07/2005 09:19:04
Mensagens: 453
Localização: Salvador - Ba
Offline
|
Se mais vc não passou o service para o filho!!
cade?
ou vc esta dizendo que passou para a classe pai e ja quer que outro objeto que esta estanciado em outra posição da memoria herde as informações, deixou de ser java e virou magia...
|
se vc não quer ficar alegre, problema seu a vida segue!
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/03/2007 22:34:47
|
Javas_Man
Debugger
Membro desde: 11/04/2006 10:45:30
Mensagens: 65
Offline
|
Se você observar no faces-config, o service está no pai. E estou querendo que ele seja visto pelas classes filhas... nada demais... magia para mim é reflexão, isso aqui é só brincadeira...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 00:26:41
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
seguinte, o que esta escrito no teu faces config, traduzido para java é o seguinte:
o seja, a variavel UsuarioBeanConsultar não teve a propriedade service setada ...
herança de classes, não propaga as propriedades para outras instancias, nem da mesma classe, quanto mais para instancias de subclasses ...
PS.: faça um favor para si mesmo, os nomes dos mbeans são nomes de variaveis, então, por favor, a primeira letra em minusculo ...
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 02:37:35
|
afamorim
JavaEvangelist
![[Avatar]](/images/avatar/0d7f9017fbda691900187b22404b8a1f.png)
Membro desde: 15/07/2005 09:19:04
Mensagens: 453
Localização: Salvador - Ba
Offline
|
Uma boa forma de vc ver isso é entendo como funciona na memoria, quando vc instancia um objeto ele ocupa uma posição na memoria se vc estancia outro é outra posição na meomoria, mesmo que o objetos sejam do mesmo tipo ele vão ter estados diferentes
O core java da uma explicação muito boa.
ps: a piada da magia foi so p/ quebrar o gelo.
afinal soria vc esta na Bahia(pelo menos eu estou...)
|
se vc não quer ficar alegre, problema seu a vida segue!
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 11:13:29
|
Javas_Man
Debugger
Membro desde: 11/04/2006 10:45:30
Mensagens: 65
Offline
|
Já consegui colocar para funcionar. Eu fiz isso.
Vejam o que fiz.... funciona !
Mas, gostaria de saber se o spring teria algum listner para ficar verificando se existe algum método a ser injetado na super classes quando a instanciarmos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 11:28:37
|
urubatan
Moderador
![[Avatar]](/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.jpg)
Membro desde: 21/09/2002 10:31:26
Mensagens: 2481
Localização: Porto Alegre/RS
Offline
|
yeap, tem sim, o nome disto no sprig é autowire-byname
da uma olhada nos exemplos que existem sobre o spring-annotation no meu blog, quase todos os exemplos usam isto
|
[]'s
Rodrigo Urubatan
http://www.urubatan.com.br
Melhor livro de RoR do brasil: http://livro.urubatan.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/03/2007 20:24:58
|
Javas_Man
Debugger
Membro desde: 11/04/2006 10:45:30
Mensagens: 65
Offline
|
Tchurma, obrigado pelas dicas...
Mas resolvi da seguinte forma. Como os beans JSF herdam do SuperBean, eu coloquei como propriedade dos beans que herdam, o método . Funcionou. Então, não precisei colocar o autowire no Spring, não chamar via método público. Acho que ficou melhor assim...
Obrigado pelas dicas pessoall....
|
|
|
 |
|
|