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

Barista Duke — [DOAG](https://www.doag.org/de/home/)

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

REFERÊNCIAS