segunda-feira, 20 de julho de 2015

Model e Taglib


Observando meu desenvolvimento no projeto Sportevento, percebi uma utilização massiva do org.springframework.ui.Model. Então, decidi expor nesse espaço, de uma forma amadora, como que eu usufruo desta ferramenta fornecida pelo Framework Spring MVC.

Esta Model nada mais é do que uma "memória" temporária, que mantém atributos e depois os copia para o HttpServletRequest. Logo, após uma outra página ser acessada, estes atributos deixam de existir.

Como estamos trabalhando com um Projeto Web Dinâmico, é comum pegar atributos do Banco de Dados para exibir numa JSP. Abaixo, está um exemplo encontrado no nosso projeto:

@RequestMapping("/cadastrado")
public String getCadastro(Usuario usuario, HttpSession session, Model model) {
usuarioDAO.adiciona(usuario);
model.addAttribute("cadastrado", "Cadastrado com sucesso. Efetue o Login.");
return "login";
}


Com o model.addAttribute, eu adiciono um atributo à Model, no modo (String, Objeto). Neste caso, eu adicionei a String "cadastrado" e o objeto "Cadastrado com sucesso. Efetue o Login.". Mas como exibir esta mensagem na tela? Simples. Basta utilizar taglibs.

Taglib consiste numa tag que pode instanciar objetos através de um construtor sem argumentos. Assim, através da String "cadastrado", eu posso instanciar o objeto "Cadastrado com sucesso. Efetue o Login.", como é mostrado no exemplo a seguir:

<h2><span style="color:red"> ${cadastrado}</span></h2>

Assim, o objeto é instanciado e, neste caso, exibido na JSP.

As vezes, em vez de adicionar um simples objeto na Model, é necessário adicionar uma List de objetos, como no exemplo a seguir:

@RequestMapping("/convites")
public String getConvites(HttpSession session, Model model) {
perfil(session, model);
Usuario user = (Usuario) session.getAttribute("usuarioLogado");
List<Convite> convites = new ArrayList<Convite>();
for (Convite c : conviteDAO.recuperarPorDestinatario(user)) {
if (c.getResposta() == 0) {
convites.add(c);
}
}
model.addAttribute("convites", convites);
return "convites";
}

Neste caso, a String "convites" será utilizada para instanciar uma lista. Mas não é tão simples exibir uma lista na JSP. Em vez de apenas escrever ${convites}, é necessário fazer um forEach na JSP. Segue o exemplo:

<c:forEach items="${convites}" var="convite">
<form action="aceita_convite">
<input type="submit" name="id" value="${convite.id}">
</form>
</c:forEach>

Traduzindo para o português, para cada item presente na lista instanciada pela palavra "convite", representado pela variável convite, será feito o form mostrado no exemplo. O ${convite.id} pega o id do convite.

Utilizando-se destas duas simples ferramentas, pode-se confeccionar um programa complexo como o Sportevento. São ferramentas imprescindíveis para a conversa entre BDD e JSP, e, além de serem fáceis de se utilizar, funcionam...
← Anterior Proxima → Página inicial

0 comentários:

Postar um comentário