Quantcast
Channel: Desenvolvimento Web » JSF
Viewing all articles
Browse latest Browse all 4

CDI + JSF2 + PrimeFaces + @ViewScope + MyFaces CODI

$
0
0

O escopo @ViewScope presente no JSF2 é usado para armazenar seus beans na árvore de componentes da página.
Conforme definição presente no JEE 6 Tutorial:

View (@ViewScoped): View scope persists during a user’s interaction with a single page (view) of a web application. 

Mas se pretender fazer o uso de JSF2 + CDI pode ter problemas/desafios pela frente. Pois o CDI se encarregará do ciclo de vida de todos os componentes do projeto, não sendo mais necessário o uso das anotações do JSF presentes no pacote javax.faces.*. Pela especificação do CDI ele atende os escopos:

@RequestScoped
@SessionScoped
@ApplicationScoped
@Dependent
@ConversationScoped

Não contemplando o escopo @ViewScope,  sendo exclusivo do JSF.

Para conseguir utilizar esse escopo, existe projetos para atender essa não integração entre o JSF2 e CDI (li no blog da caelum que na versão 2.2 já existirá uma solução nativa pra isso). Googlando encontrei o MyFaces CODI e o Seam Faces.

Fiz o uso do MyFaces CODI, instalação bem simples, bastando adicionar as dependências para o projeto no pom.xml de seu projeto, conforme exemplo:


 org.apache.myfaces.extensions.cdi.core
 myfaces-extcdi-core-impl
 1.0.5

 org.apache.myfaces.extensions.cdi.modules
 myfaces-extcdi-jsf20-module-api
 1.0.5

 org.apache.myfaces.extensions.cdi.modules
 myfaces-extcdi-jsf20-module-impl
 1.0.5

Tentei fazer o uso do projeto Seam Faces, não tive problemas com a resolução de suas dependências e instalação, acabei desistindo por não estar com muito tempo disponivel. Mas segundo os posts o projeto atende a necessidade, desde que esteja configurado corretamente =D.

Resumindo, o uso do CDI + JSF2 + @ViewScope foi possivel devido ao MyFaces CODI.

Correção do uso da @ViewScope e MyFaces CODI, acabei tendo um problema em que o os atributos do bean estava sendo perdido, enquanto pesquisava a solução inicial, através do projeto ficou claro que poderia usar as tags @ViewScope ou @ViewAccessScoped, ambas deveriam ter o mesmo comportamento. Realizei o teste com a segunda tag e o fonte funcionou conforme esperado =D


Viewing all articles
Browse latest Browse all 4