Olá desenvolvedores, hoje implementaremos o combo box para listar a categoria de produtos adicionadas. Começamos esta implementação de categoria de produtos criando no banco de dados uma tabela para a categoria. No tutorial anterior, criamos uma chave estrangeira na tabela produtos para provermos um relacionamento entre esta e a tabela de categorias.

Mas não apenas, criamos também o objeto categorias e na classe de conexão com o banco de dados implementamos o carregamento da lista de produtos. Então se você chegou aqui agora, volte alguns tutoriais para se contextualizar. Hoje além do combo box, iremos criar também o carregamento pela servlet.

Mas antes de começarmos, precisaremos criar no objeto produto, ou seja, na classe BeanProduto o atributo categoria_id e seus respectivos métodos Getters and Setters.

private Long categoria_id;

CARREGANDO PELA SERVLET

Assim no método doPost da servlet ServletsProduto.java antes de redirecionarmos para o cadastro de produtos, iremos setar dentro de “categorias” a lista de categorias de produtos que carregamos no DaoProduto. O request faz uma requisição ao servidor, ao passo que o setAttribute adiciona um novo produto ou modifica o valor de um atributo existente.

request.setAttribute(“categorias”, daoProduto.listaCategorias());

No doGet existe uma série de validações onde repetimos em todas elas a configuração de redirecionamento para a página cadastroProduto.jsp. Vamos movê-la para o início do método e assim não precisaremos repeti-la em cada uma das validações. Abaixo a linha de código a qual nos referimos.

E a confirmação de redirecionamento também será movida, mas neste caso, a colocaremos após todas as condições.

view.forward(request, response);

Tais modificações deixarão o código mais limpo e fácil de ler, entregando também uma melhor performance, visto que não há mais repetições de códigos.

Agora sim, antes da linha de código acima que acabamos de mover para fora das validações, iremos redirecionar os valores da categoria, ou seja, “setaremos” o atributo de categoria para que ele seja carregado. Então nosso código ficará assim:

request.setAttribute(“categorias”, daoProduto.listaCategorias());
view.forward(request, response)

IMPLEMENTANDO O COMBO BOX

Fizemos todo o back-end mas precisamos ter o campo para a resposta do servidor ser exibida para o usuário. Assim, na página JSP de cadastro de produtos iremos inserir uma nova linha, com duas células, onde uma das quais será para o combo box.

O combo box será implementado por meio da tag select, que por sua vez carregará o poder do JSTL com a implementação de um forEach e assim poderemos trabalhar com dados dinâmicos. E combinaremos o JSTL com uma expressão JSP apontando para o atributo categorias que foi carregado na servlesProduto.

E finalmente carregaremos as opções utilizando a tag option cujo valor recebe um cat.id. O cat é um recurso de catálogo implementado pelo JSP que nos permite pesquisar itens ou navegar por categorias para localizar itens. O valor é utilizado pelo servidor, o id nos permite manipular elementos e o nome é o que será exibido para o usuário.

No front-end o resultado fica como mostra a imagem abaixo:

EM POUCAS PALAVRAS

E o tutorial de hoje trouxe o carregamento dos produtos pela servlet, bem como a implementação do combo box que exibe a lista de categorias para o usuário na tela. E assim estamos carregando os valores em um combo e enviando para o banco de dados. Eu fico por aqui e nos vemos no próximo tutorial.