Spring + FacesContext

45 views
Skip to first unread message

Charles Queiroz

unread,
Sep 27, 2013, 2:46:37 PM9/27/13
to ce...@googlegroups.com
Boa tarde senhores, 

Estou com uma dúvida aqui relacionada basicamente, acredito eu, com a integração entre o Spring 3 e o JSF 2 (Ou é burrice minha mesmo.. :P ). Estou desenvolvendo uma aplicação "don't matter" e me deparei com a seguinte situação:

Eu definir o meu aplicationContext.xml da seguinte forma: 


Além disso, tenho o que seria um "ManageBean", mas sendo gerenciado pelo Spring:



Notem que nele eu injeto 2 beans. o UserService e o FacesAcessor. Até ai, tudo bem. A injeção é feita corretamente (aparentemente). Mas vejamos o conteúdo do bean facesAcessor:



Vamos ao problema. Notem que na imagem acima, eu indiquei uma linha, que é o corpo do método init desse componente. O propósito desse cara, é, teoricamente, ser uma classe responsável APENAS por recuperar
minhas mensagens que foram definidas no arquivo messages_pt_BR.properties. Acontece que a aplicação só "sobe" se esta linha estiver comentada. Ou seja, se eu rodar com ela, da forma como está, o JBoss AS 7 me lança essa exception aqui:



Ou seja, um NullPointerZão bem na linha lá que eu citei. A minha duvida, basicamente é: Como, usando o Spring, eu posso ter um bean gerenciado por ele que cumpra esse propósito? Eu quero um beans que simplesmente acesse 

o facesContext para adicionar mensagens que vou exibir ao cliente na tela. 


Consegui ser claro ?


Há alguma forma mais elegante de conseguir isso ? Usando apenas o JSF ( @ManageBean ) funcionava que era uma beleza, mas como vou usar outros "produtos" da Spring, ( como o Spring Security, Spring JMS, etc ) acredito que terei menos dor de cabeças se "tudo" for gerenciado por ele.  Alguém tem alguma ideia de como me ajudar nesse "probleminha" ?

Agradeço a atenção de todos, e me desculpem qualquer problema que por ventura eu tenha causado. É o meu primeiro post aqui.

Dicas são bem vindas.

Atenciosamente,

--
Charles Queiroz
Dazen™ IT Solutions
0 (85) 9933-1585
cha...@dazen.com.br  


Guilherme Bahia

unread,
Sep 27, 2013, 3:06:29 PM9/27/13
to ce...@googlegroups.com
Cara no faces-config.xml do JSF você tem que configurar o Spring:

 <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>



Date: Fri, 27 Sep 2013 11:46:37 -0700
From: jtin...@gmail.com
To: ce...@googlegroups.com
Subject: [CEJUG] Spring + FacesContext
--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cejug.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Edivando José Alves

unread,
Sep 27, 2013, 3:08:03 PM9/27/13
to ce...@googlegroups.com
Cara, não sei muito sobre Spring( mas precisamente sobre o Spring MVC ), mas sei que ele um framework "Action Based", já o JSF é "Component Based" em outras palavras
vc não poderá utilizar na camada de visualização os dois( @Controller e @ManagerBean ).

Mas poderá poderá utilizar outros produtos como Spring Security, Spring Social e outros...


Dá uma olhada nesse artigo

Lembrando que não sou especialista em Spring...




2013/9/27 Charles Queiroz <jtin...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cejug.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Atenciosamente 
---
Edivando J. Alves
Graduando em Engenharia da Computação pelo Instituto Federal do
Ceará-IFCE
http://lattes.cnpq.br/7355147688215145

Rafael Ponte

unread,
Sep 27, 2013, 3:12:37 PM9/27/13
to ce...@googlegroups.com
Olá Charles,

O FacesContext não existe na inicialização da aplicação nem do Spring. Ele só existe durante uma requisição que passe
pelo servlet do Jsf, por isso o erro ocorre!

Para resolver o problema, tente carregar o bundle somente dentro de uma requisição!



2013/9/27 Charles Queiroz <jtin...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cejug.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

Guilherme Bahia

unread,
Sep 27, 2013, 3:14:55 PM9/27/13
to ce...@googlegroups.com
A MUITO tempo atrás eu fiz um projetinho no google para servir de consulta, maven, spring, springsecurity. Ele deve ter umas besteiras a serem arrumadas ou atualizadas, mas é Spring 3 e pode servir pra vc tirar dúvidas.

http://code.google.com/p/minhas-arquiteturas/source/browse/#svn%2Ftrunk%2FSpring

Se alguém tentar rodas as querys, nomeadas ou não, do tipo:
(:userId is null or upper(u.userId))
dão problema e por isso devem ser refeitas



From: gbvba...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] Spring + FacesContext
Date: Fri, 27 Sep 2013 19:06:29 +0000

Charles Queiroz

unread,
Sep 27, 2013, 3:15:36 PM9/27/13
to ce...@googlegroups.com
Opa Guilherme, eu fiz isso sim. Só esqueci de mostrar. Olha aqui: 




E Edvandro, eu até posso, mas não é o caso. Eu não estou tentando usar as duas anotations ao mesmo tempo. Spring funciona com JSF a questão não é essa, é: Como eu posso criar uma classe "separada" com a unica responsabilidade de adicionar as mensagens no facesContext do JSF, mas que a mesma seja genrênciada pelo Spring.

Charles Queiroz

unread,
Sep 27, 2013, 3:20:04 PM9/27/13
to ce...@googlegroups.com
Há entendi. Faz sentido. Onde você sugere que eu faça isso ? 

Tipo ... Se o facesContext só existe durante uma requisição, esse meu bean não pode ter o scorpo de application certo ? 

Logo, dado as circustância, tem como eu ter uma classe "utilitária" para cumprir essa tarefa ? 

Caso não, esse meu componente tem que ter scorpo de sessão ? 


Atenciosamente,
Charles Queiroz.

Rafael Ponte

unread,
Sep 27, 2013, 3:40:45 PM9/27/13
to ce...@googlegroups.com
Olá,

Você pode fazer em qualquer bean e em qualquer escopo, contudo o FacesContext.getCurrentInstance() só pode ser
chamado dentro de uma requisição que passe pelo FacesServlet.

Se você precisa mesmo chama-lo, já que precisa do locale do usuário logado (ou locale da requisição), então só chame-o no momento certo e não na inicialização
do bean, pois na inicialização do bean de escopo singleton (ou application) não existe requisição web.



2013/9/27 Charles Queiroz <jtin...@gmail.com>
Reply all
Reply to author
Forward
0 new messages