JSR-371 ( MVC 1.0 ) — Modelos baseados em CDI

Neste post veremos como podemos utilizar o CDI para expor nossas informações para a View .
A especificação suporta dois tipos de modelos: o primeiro é baseado no CDI
@Named beans e o segundo na interface Models, que define um mapa entre nomes e objetos.
Todas a implementações do MVC é obrigatoria implementar a interface Models, já o suporte para CDI bean @Named é OPCIONAL mas altamente RECOMENDADO.
esse é mais um post curto e vou mostrar como utilizar ambos os modelos .
Maven Dependencies
crie um projeto maven e configure o pom.xml da seguinte forma :
feito isso, criaremos duas classes uma Application, um controller e um model para exemplificar .
Criando as Classes
A primeira classe que iremos criar é a Application e vamos da um override no método de properties do Jax-RS então a classe ficaria assim com o novo recurso :
agora vamos criar um controller com a primeira forma de expor informações para as views :
Como mostrado no código acima , a primeira forma é o uso da interface Models , onde injetamos a mesma e dentro do corpo do método getHello chamamos esse models passando uma chave/valor para esse mapa.
Em seguida criamos um hello.jsp dentro de WEB-INF/views/hello.jsp com o seguinte conteúdo :
aqui na tag h1 recuperamos o valor passando no nome da chace (nome) que definimos no código acima.
A segunda forma é utilizando beans CDI para expor dados para as views, até o momento esse suporte é oferecido pelas views engines (JSP,Facelets e Thymeleaf) .
Vamos criar uma classe modelo da seguinte forma :
agora sim temos um classe bean CDI.
legal não ?
e vamos modifica o nosso controller para utilizamos esse modelo da seguinte forma :
desta é bem semelhante ao uso da interface Models, a diferença é que estamos usando uma bean CDI , esta forma de uso é altamente recomendada segundo a spec .
Agora vamos modifica nossa view para esta chamando esse bean CDI :
aqui já temos acesso ao nosso bean que acessa o nosso getNome carregando o valor passado no setNome em getHelloCDI() .
isso é tudo : )
Código-fonte : https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/MVC1.0-samples/Krazo-CDI