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 .


Maven Dependencies

feito isso, criaremos duas classes uma Application, um controller e um model para exemplificar .


Criando as Classes

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

Daniel Dias

SouJava Board Member, JCP Member, JSR-354 (Money), JSR-371…

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

SouJava Board Member, JCP Member, JSR-354 (Money), JSR-371 (MVC 1.0), JSR-382 (Configuration 1.0) specifications contributors, Expert Group JSR-385 (UoM 2.0) and Eclipse Committer, is taking the first steps in contributing Open Source projects.

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

SouJava Board Member, JCP Member, JSR-354 (Money), JSR-371 (MVC 1.0), JSR-382 (Configuration 1.0) specifications contributors, Expert Group JSR-385 (UoM 2.0) and Eclipse Committer, is taking the first steps in contributing Open Source projects.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store