rotilho
Setembro 22, 2011, 8:17pm
#1
Pessoal,
Boa noite! Estou batendo cabeça a um tempo tentando resolver um impasse em um Listener do Hibernate.
Essencialmente o que estou tentando fazer é acessar o UserInfo , um componente @SessionScoped , em uma classe que extende o DefaultSaveOrUpdateEventListener do Hibernate. Como não posso alterar o construtor do meu listener tentei injetar com o Spring o UserInfo , mas não obtive sucesso.
Por acaso alguém teria uma luz?
não dá pra fazer isso, pq não é o Vraptor ou o Spring que vão instanciar o listener, e sim o hibernate…
vc só consegue pegar um objeto qqer usando algum tipo de acesso estático, infelizmente…
vc pode criar o seu próprio, ou usar um que o VRaptor tem (não use em casos normais)
UserInfo info = (UserInfo) VRaptorRequestHolder.currentRequest().getRequest().getSession().getAttribute("userInfo");
(a request atual, e pegando o userInfo a partir da session diretamente)
só cuidado que se vc usar esse listener fora de um request o currentRequest vai vir null
Interessante…
Lucas, com VRaptorRequestHolder é possível obter qualquer objeto gerenciado pelo VRaptor?
não, só escopo de request e de session (geralmente é o nome da classe com a primeira minúscula, num atributo de request ou session)…
Muito bom saber, isso é o tipo de coisa que tem que ter um aviso “Use com moderação”.
rotilho
Setembro 24, 2011, 2:51pm
#6
[quote=Lucas Cavalcanti]não dá pra fazer isso, pq não é o Vraptor ou o Spring que vão instanciar o listener, e sim o hibernate…
vc só consegue pegar um objeto qqer usando algum tipo de acesso estático, infelizmente…
vc pode criar o seu próprio, ou usar um que o VRaptor tem (não use em casos normais)
UserInfo info = (UserInfo) VRaptorRequestHolder.currentRequest().getRequest().getSession().getAttribute("userInfo");
(a request atual, e pegando o userInfo a partir da session diretamente)
só cuidado que se vc usar esse listener fora de um request o currentRequest vai vir null[/quote]
Funcionou! Muito obrigado @Lucas
NO VRAPTOR 4 O “VRaptorRequestHolder” FOI REMOVIDO. O QUE DEVO FAZER PARA PEGAR INFORMAÇÕES DA SESSÃO AGORA?