JSF + Spring  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
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 ?!
afamorim
JavaEvangelist
[Avatar]

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!
[Email]
urubatan
Moderador
[Avatar]

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
[WWW]
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 !!!
afamorim
JavaEvangelist
[Avatar]

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!
[Email]
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...
urubatan
Moderador
[Avatar]

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
[WWW]
afamorim
JavaEvangelist
[Avatar]

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!
[Email]
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.
urubatan
Moderador
[Avatar]

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
[WWW]
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....
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team