GARANTIR DESCONTO

Fórum Carregar lista em um elemento <select> em jsp usando Spring MVC #446686

25/06/2013

0

Ola a todos.

Estive percorrendo muitos sites e fóruns com essa dúvida, porem em todos os que vi, fiquei com mais dúvidas ainda de como aplicar a solução.

O que eu pretendo fazer é o seguinte: Tenho um formulário de fornecedores aonde cadastro meus fornecedores, e tenho um formulário de produtos onde cadastro meus produtos, e nesse formulário jsp, gostaria de colocar uma <select> que puxasse do banco de dados os nomes do fornecedores, para evitar que o usuário digite o mesmo.

Já vi alguns exemplos bem legai com jstl, porém não consegui aplicar. Alguém pode ajudar?


Segue minha classe modelo Produto

public class Produto {

private long id;
private String nome;
private int quantidade;
@NumberFormat(style = Style.NUMBER, pattern = "#,###.###")
private double valor;
private String descricao;
@DateTimeFormat(pattern="dd/MM/yyyy")
private Date dataDeAtualizacao;

public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getQuantidade() {
return quantidade;
}
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Date getDataDeAtualizacao() {
return dataDeAtualizacao;
}
public void setDataAtualizacao(Date date) {
this.dataDeAtualizacao = date;
}
}

Segue meu ProdutoDAO

public class ProdutoDAO {
private Connection connection;
public ProdutoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void adicionarProduto(Produto produto) {
String sql = "insert into produto "
+ "(nome, quantidade, valor, descricao, datadeatualizacao)"
+ "values (?,?,?,?,?)";

try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setString(1, produto.getNome());
stmt.setInt(2, produto.getQuantidade());
stmt.setDouble(3, produto.getValor());
stmt.setString(4, produto.getDescricao());
stmt.setDate(5, new Date(Calendar.getInstance().getTimeInMillis()));
stmt.execute();
stmt.close();
connection.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public List<Produto> listaDeProdutos() {
try {
List<Produto> produtos = new ArrayList<Produto>();
PreparedStatement stmt = this.connection
.prepareStatement("select * from produto");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
produtos.add(populaProduto(rs));
}
rs.close();
stmt.close();
return produtos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

private Produto populaProduto(ResultSet rs) throws SQLException {
Produto produto = new Produto();
produto.setId(rs.getLong("id"));
produto.setNome(rs.getString("nome"));
produto.setQuantidade(rs.getInt("quantidade"));
produto.setValor(rs.getDouble("valor"));
produto.setDescricao(rs.getString("descricao"));
produto.setDataAtualizacao(rs.getDate("datadeatualizacao"));
return produto;
}

public void removeProduto(Produto produto) {
String sql = "delete from produto where id = ?";
try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, produto.getId());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public Produto buscaPorId(Long id) {
if (id == null) {
throw new IllegalStateException("Id do produto não deve ser nulo");
}
try {
PreparedStatement stmt = this.connection
.prepareStatement("select * from produto where id = ?");
stmt.setLong(1, id);

ResultSet rs = stmt.executeQuery();
if (rs.next()) {
return populaProduto(rs);
}
rs.close();
stmt.close();
return null;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public void entradaProduto(Produto produto) {
String sql = "update produto set quantidade = quantidade + ?, dataDeAtualizacao = ? where id = ?";
PreparedStatement stmt;
try {
stmt = connection.prepareStatement(sql);
stmt.setInt(1, produto.getQuantidade());
stmt.setDate(2, new Date(Calendar.getInstance().getTimeInMillis()));
stmt.setLong(3, produto.getId());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public void alteraProduto(Produto produto) {
String sql = "update produto set nome = ?,"
+ "quantidade = ?, valor = ?, descricao = ?, dataDeAtualizacao = ? where id = ?";
PreparedStatement stmt;
try {
stmt = connection.prepareStatement(sql);
stmt.setString(1, produto.getNome());
stmt.setInt(2, produto.getQuantidade());
stmt.setDouble(3, produto.getValor());
stmt.setString(4, produto.getDescricao());
stmt.setDate(5, new Date(Calendar.getInstance().getTimeInMillis()));
stmt.setLong(6, produto.getId());
stmt.execute();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

Segue meu form Cadastro Produto, porém incompleto devido a dificuldade de criar o <select>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro de Produto</title>
</head>
<body>
<h1 align="center">Tela de Cadastro de Produtos</h1>
<br>
<form action="cadastroDeProduto" method="post">
<table align="center">
<tr>
<td>Nome:</td><td colspan="3"> <input type="text" size="58" name="nome"></td>
</tr>
<tr>
<td>Fornecedor:</td><td colspan="3">
<select name="fornecedores">
>
</select>
</td>
</tr>
<tr>
<td>Quantidade:</td><td> <input type="text" size="10" name="quantidade"></td>
<td>Valor:</td><td> <input type="text" size="35" name="valor">
</td>
</tr>
<tr>
<td>Descrição do Produto:</td><td colspan="3"> <textarea rows="3"
cols="43" name="descricao"></textarea>
</td>
</tr>
<tr align="right">
<td colspan="4"><input type="submit" value="Cadastrar Produto">
</td>
</tr>

</table>
<c:import url="/WEB-INF/views/menu/rodape.jsp" />
</form>
</body>
</html>

FornecedorDAO

public class FornecedorDAO {

private Connection connection;

public FornecedorDAO() {
this.connection = new ConnectionFactory().getConnection();
}

public void cadastrarFornecedor(Fornecedor fornecedor){
String sql = "insert into fornecedor" + "(nome, contato, telefone, cnpj, inscricaoestadual, inscricaomunicipal, rua, numero, complemento, bairro, cidade, uf, cep)"
+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?)";

try {

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString(1, fornecedor.getNome());
stmt.setString(2, fornecedor.getContato());
stmt.setLong(3, fornecedor.getTelefone());
stmt.setLong(4, fornecedor.getCnpj());
stmt.setLong(5, fornecedor.getInscricaoEstadual());
stmt.setLong(6, fornecedor.getInscricaoMunicipal());
stmt.setString(7, fornecedor.getRua());
stmt.setInt(8, fornecedor.getNumero());
stmt.setString(9, fornecedor.getComplemento());
stmt.setString(10, fornecedor.getBairro());
stmt.setString(11, fornecedor.getCidade());
stmt.setString(12, fornecedor.getUf());
stmt.setLong(13, fornecedor.getCep());

stmt.execute();
stmt.close();

connection.close();

} catch (SQLException e) {
throw new RuntimeException(e);
}

}

public List<Fornecedor> getLista() {

try {

List<Fornecedor>fornecedores = new ArrayList<Fornecedor>();
PreparedStatement stmt = this.connection.prepareStatement("select * from fornecedor");

ResultSet rs = stmt.executeQuery();

while(rs.next()){
fornecedores.add(populaFornecedor(rs));
}

rs.close();
stmt.close();

connection.close();

return fornecedores;

} catch (Exception e) {
throw new RuntimeException(e);
}
}

private Fornecedor populaFornecedor(ResultSet rs) throws SQLException {

Fornecedor fornecedor = new Fornecedor();

fornecedor.setId(rs.getLong("id"));
fornecedor.setNome(rs.getString("nome"));
fornecedor.setContato(rs.getString("contato"));
fornecedor.setTelefone(rs.getLong("telefone"));
fornecedor.setCnpj(rs.getLong("cnpj"));
fornecedor.setInscricaoEstadual(rs.getLong("inscricaoestadual"));
fornecedor.setInscricaoMunicipal(rs.getLong("inscricaomunicipal"));
fornecedor.setRua(rs.getString("rua"));
fornecedor.setNumero(rs.getInt("numero"));
fornecedor.setComplemento(rs.getString("complemento"));
fornecedor.setBairro(rs.getString("bairro"));
fornecedor.setCidade(rs.getString("cidade"));
fornecedor.setUf(rs.getString("uf"));
fornecedor.setCep(rs.getLong("cep"));

return fornecedor;
}

public void removeFornecedor(Fornecedor fornecedor){
String sql = "delete from fornecedor where id = ?";

try {
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setLong(1, fornecedor.getId());
stmt.execute();

} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public Fornecedor buscaFornecedorPorId(Long id){
if(id == null){
throw new IllegalStateException("Id do Fornecedor não deve ser nulo");
}

try {

PreparedStatement stmt = this.connection.prepareStatement("select * from fornecedor where id = ?");
stmt.setLong(1, id);

ResultSet rs = stmt.executeQuery();
if(rs.next()){
return populaFornecedor(rs);
}

rs.close();
stmt.close();
connection.close();

return null;

} catch (SQLException e) {
throw new RuntimeException(e);
}
}

public void alteraFornecedor(Fornecedor fornecedor){

String sql = "update fornecedor set nome=?," + "contato=?, telefone=?, cnpj=?, inscricaoestadual=?, inscricaomunicipal=?,"
+ "rua=?, numero=?, complemento=?, bairro=?, cidade=?, uf=?, cep=? where id=?";


try {
PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString(1, fornecedor.getNome());
stmt.setString(2, fornecedor.getContato());
stmt.setLong(3, fornecedor.getTelefone());
stmt.setLong(4, fornecedor.getCnpj());
stmt.setLong(5, fornecedor.getInscricaoEstadual());
stmt.setLong(6, fornecedor.getInscricaoMunicipal());
stmt.setString(7, fornecedor.getRua());
stmt.setInt(8, fornecedor.getNumero());
stmt.setString(9, fornecedor.getComplemento());
stmt.setString(10, fornecedor.getBairro());
stmt.setString(11, fornecedor.getCidade());
stmt.setString(12, fornecedor.getUf());
stmt.setLong(13, fornecedor.getCep());
stmt.setLong(14, fornecedor.getId());

stmt.execute();

} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

Fornecedor Controller

package br.com.doisUnidos.controller;

import javax.swing.JOptionPane;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.doisUnidos.modelo.Fornecedor;
import br.com.doisUnidos.modelo.dao.FornecedorDAO;

@Controller
public class FornecedorController {

@RequestMapping("chamaFornecedor")
public String chamaFornecedor() {
return "fornecedor/cadastro_fornecedor";
}

@RequestMapping("cadastrarFornecedor")
public String cadastrarFornecedor(Fornecedor fornecedor) {
FornecedorDAO dao = new FornecedorDAO();
dao.cadastrarFornecedor(fornecedor);
JOptionPane.showMessageDialog(null,
"Fornecedor Cadastrado com Sucesso!");
return "redirect:listaFornecedor";
}

@RequestMapping("listaFornecedor")
public String listaDeFornecedor(Model model) {
FornecedorDAO dao = new FornecedorDAO();
model.addAttribute("fornecedores", dao.getLista());
return "fornecedor/lista_fornecedor";
}

@RequestMapping("removeFornecedor")
public String removeProduto(Fornecedor fornecedor) {
if (JOptionPane.showConfirmDialog(null, "Deseja mesmo Remover?",
"Remover Fornecedor", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
FornecedorDAO dao = new FornecedorDAO();
dao.removeFornecedor(fornecedor);
} else {
return "redirect:listaFornecedor";
}
return "redirect:listaFornecedor";
}

@RequestMapping("alteraFornecedor")
public String alteraFornecedor(Long id, Model model) {
FornecedorDAO dao = new FornecedorDAO();
model.addAttribute("fornecedor", dao.buscaFornecedorPorId(id));
return "fornecedor/alterar_fornecedor";
}

// Altera o fornecedor selecionado.
@RequestMapping("alterarFornecedor")
public String alterarFornecedor(Fornecedor fornecedor) {
FornecedorDAO dao = new FornecedorDAO();
dao.alteraFornecedor(fornecedor);
// JOptionPane.showMessageDialog(null,
// "Fornecedor Alterado com sucesso!");
return "redirect:listaFornecedor";
}

}

Já quebrei a cabeça, não sei tb se preciso criar algum método no meu FornecedorController para retornar a lista, ou se a mesma pode ser retornada automaticamente no jsp, enfim...
Alexsandro Farias

Alexsandro Farias

Responder

Posts

27/06/2013

Alexsandro Farias

Bom... Como ninguém Respondeu a minha dúvida, acabou que consegui resolver usando Scriplet.

Ficou da seguinte forma:

<select name="fornecedor">
<option>Selecione o fornecedor...</option>
<%
FornecedorDAO dao = new FornecedorDAO();
List<Fornecedor>fornecedores = dao.getLista();
for(Fornecedor fornecedor : fornecedores){
%>
<option><%=fornecedor.getNome() %></option>
<%} %>
</select>
Responder

Gostei + 0

29/06/2013

Joel Rodrigues

Como o problema foi solucionado, estou marcando o tópico como concluído.
Obrigado por compartilhar a solução.
Responder

Gostei + 0

01/07/2013

José

Tópico concluído.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar