Aula_06 - Spring MVC - Listagem e Filtro de Pesquisa

22 Pages • 1,090 Words • PDF • 256 KB
Uploaded at 2021-09-24 12:04

This document was submitted by our user and they confirm that they have the consent to share it. Assuming that you are writer or own the copyright of this document, report to us by using this DMCA report button.


Desenvolvimento para WEB II

Prof. Roberto Alencar

Roteiro O que veremos nesta aula ? ➔

Listando registros no projeto com Spring MVC



Elaborando um filtro de pesquisa na tela de listagem

Listagem e Filtro de Pesquisa com Spring MVC

Spring MVC - Listagem Listando registros no projeto ➔



Como já conseguimos adicionar produtos em nossa aplicação, precisamos saber o que foi adicionado. Para isso, precisamos criar uma funcionalidade que lista os produtos. É necessário primeiramente implementar o método listar da classe ProdutoDao para conseguir a lista dos produtos que estão no banco de dados:

public List listar() { EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT); EntityManager manager = factory.createEntityManager(); List lista = manager.createQuery("FROM Produto ORDER BY descricao").getResultList(); manager.close(); factory.close(); return lista; }

Spring MVC - Listagem Listando registros no projeto ➔

Após criarmos o método listar em ProdutoDao, implemente o método listar dentro da classe ProdutoController:

@RequestMapping("/produto/list") public String listarProduto() { ProdutoDao dao = new ProdutoDao(); List listaProduto = dao.listar(); return "produto/listarProduto";

}

Spring MVC - Listagem Listando registros no projeto ➔





Essa lista de produtos deverá ser disponibilizada para o JSP fazer sua exibição. Para que possamos disponibilizar um objeto para o JSP, temos que alterar o retorno do método lista. A ideia é que o Spring MVC não só retorne o nome da página JSP ( produto/listarProduto ) quando chama o método listarProduto, o Spring MVC pode retornar também dados para o JSP. Os dados para a exibição na tela e o nome da página JSP foram encapsulados pelo Spring MVC em uma classe especial que se chama ModelAndView.

Spring MVC - Listagem Listando registros no projeto ➔

Vamos criar um objeto do tipo ModelAndView e preencher esse modelo com nossa lista de produtos e definir o nome da página JSP. O método lista deve retornar esse objeto, não mais apenas um String. Veja como fica o código:

@RequestMapping("/produto/list") public ModelAndView listarProduto() { ProdutoDao dao = new ProdutoDao(); List listaProduto = dao.listar(); ModelAndView mv = new ModelAndView("produto/pesquisarProduto" ); mv.addObject("listaProduto", listaProduto); return mv; }

Spring MVC - Listagem Listando registros no projeto ➔



Dessa forma, será disponibilizado para o JSP um objeto chamado listaProduto que pode ser acessado via Expression Language como ${listaProduto} . Poderíamos em seguida iterar sobre essa lista utilizando a Tag forEach da JSTL core.

Spring MVC - Listagem Listando registros no projeto ➔







Observando o código do método listarProduto pode parecer estranho instanciar uma classe do framework Spring ( ModelAndView ) dentro do nosso controlador. Isso até influencia negativamente a testabilidade do método. Por isso, O Spring MVC dá uma outra opção, oferece uma alternativa ao uso da classe ModelAndView . No nosso método podemos receber um objeto que representa o modelo para o nosso JSP. Spring MVC pode passar um parâmetro para o método do controlador que tem a função do modelo.

Spring MVC - Listagem Listando registros no projeto ➔

Esse modelo podemos preencher com a lista de produtos. Assim também continuaremos retornar uma String como retorno do método que indica o caminho para o JSP:

@RequestMapping("/produto/list")

public String listarProduto(Model model) { ProdutoDao dao = new ProdutoDao(); List listaProduto = dao.listar(); model.addAttribute("listaProduto", listaProduto); return "produto/pesquisarProduto"; }

Spring MVC - Listagem Listando registros no projeto ➔

Altere o JSP listarProduto.jsp para que este utilize a lista enviada pelo Controller na tag com expression language:

Listar Produto Código Descrição ... ${produto.codigo} ${produto.descricao} ...

Spring MVC - Listagem Enviando mensagens para o JSP ➔

Através da classe Model do Spring MVC também é possível passar mensagens de sucesso ou erro para o JSP:

@RequestMapping("/produto/save") public String save(Produto produto, @RequestParam("file") MultipartFile imagem, Model model) { if (Util.fazerUploadImagem(imagem)) { produto.setImagem(Util.obterMomentoAtual() + " - " + imagem.getOriginalFilename()); } ProdutoDao dao = new ProdutoDao(); dao.salvar(produto); model.addAttribute("mensagem", "Produto Incluído com Sucesso"); return "produto/incluirProduto"; }

Spring MVC - Listagem Enviando mensagens para o JSP ➔

No arquivo JSP basta apenas utilizar Expression Languagem para exibir a mensagem:

... Incluir Produto ${mensagem} Código ...

Aplicando Filtro de Pesquisa

Spring MVC – Filtro de Pesquisa Implementando filtro de pesquisa ➔

Implemente um filtro para a tela de listagem de Produtos:

Spring MVC – Filtro de Pesquisa Implementando filtro de pesquisa ➔

Desta forma, o código do JSP do filtro ficaria:

... Filtro Produtos Código Descrição   Limpar       Filtrar   Lista Produtos ...

Spring MVC – Filtro de Pesquisa Implementando filtro de pesquisa ➔

Implemente o método ProdutoController:

filtrarProduto

em

@RequestMapping("/produto/filter") public String filtrarProduto(Produto produto, Model model) { ProdutoDao dao = new ProdutoDao(); List listaProduto = dao.listar(produto); model.addAttribute("listaProduto", listaProduto); return "produto/listarProduto"; }

Spring MVC – Filtro de Pesquisa Listando registros no projeto ➔

Ajuste o método listar na classe ProdutoDao:

public List listar(Produto produto) { EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT); EntityManager manager = factory.createEntityManager(); Query query = null; String codigo = produto != null ? produto.getCodigo() : ""; String descricao = produto != null ? produto.getDescricao() : ""; if (!codigo.equals("") && descricao.equals("")) { query = manager.createQuery("FROM Produto WHERE codigo LIKE :paramCodigo ORDER BY descricao"); query.setParameter("paramCodigo", "%" + codigo + "%"); } else if (codigo.equals("") && !descricao.equals("")) { query = manager.createQuery("FROM Produto WHERE descricao LIKE :paramDescricao ORDER BY descricao"); query.setParameter("paramDescricao", "%" + descricao + "%"); } else if (!codigo.equals("") && !descricao.equals("")) { query = manager.createQuery( "FROM Produto WHERE codigo LIKE :paramCodigo AND descricao LIKE :paramDescricao ORDER BY descricao"); query.setParameter("paramCodigo", "%" + codigo + "%"); query.setParameter("paramDescricao", "%" + descricao + "%"); } else { query = manager.createQuery("FROM Produto ORDER BY descricao"); } List lista = query.getResultList(); manager.close(); factory.close(); return lista; }

Spring MVC – Filtro de Pesquisa Listando registros no projeto ➔

Tela de listagem com o filtro implementado:

Dúvidas

Exercícios Implemente no Projeto Spring MVC criado na aula anterior: 1) Implemente a tela de listagem de produto com opções de filtro da listagem.

Obrigado pela Atenção ! Até a próxima aula.

Prof. Roberto Alencar

[email protected]
Aula_06 - Spring MVC - Listagem e Filtro de Pesquisa

Related documents

22 Pages • 1,090 Words • PDF • 256 KB

4 Pages • 1,204 Words • PDF • 293.5 KB

2 Pages • 961 Words • PDF • 506.1 KB

7 Pages • 1,054 Words • PDF • 373.7 KB

154 Pages • 58,364 Words • PDF • 1.2 MB

32 Pages • 3,310 Words • PDF • 4.4 MB

5 Pages • 716 Words • PDF • 318.6 KB

12 Pages • 258 Words • PDF • 259.1 KB

464 Pages • 145,928 Words • PDF • 8.1 MB

8 Pages • 2,714 Words • PDF • 41.2 KB

55 Pages • 27,003 Words • PDF • 15.5 MB

132 Pages • 63,868 Words • PDF • 9.6 MB