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

Daniel Dias
Jan 28, 2019 · 2 min read
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 .

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 .

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

Daniel Dias

Software Engineering, Open Source Enthusiast. Apache and EclipseEE4J committer.

Daniel Dias

Software Engineering, Open Source Enthusiast. Apache and EclipseEE4J committer.

Daniel Dias

Written by

SouJava Board Member, JCP Member, JSR-371 (MVC 1.0), JSR-382 (Config) specifications contributor, EG JSR-385 (UoM) and Eclipse Committer .

Daniel Dias

Software Engineering, Open Source Enthusiast. Apache and EclipseEE4J committer.