Adicionar itens a uma lista já existente
Boa tarde,
Estou com dificuldade em entender como fazer o seguinte:
Tenho uma pagina que tem um select populado dinamicamente com informações do BD.
Tenho um botão que deve atualizar a pagina a adicionar o item selecionado em uma lista
Esta quase funcionando ... o problema é q quando adiciono um item ele subistitui o anterior, ou seja, nunca retorna mais de um item ...
esse é o jsp
<form method="POST" action="" name="f" id="f">
Produtos <select id="produto" name="produto">
<c:forEach var="i" items="$">
<option value="${i.prod_id}">${i.nome}</option>
</c:forEach><input type="button" value="Adicionar" onclick="add();"><br>
</select>
<table width="800px" border="2">
<tr>
<td>Cod Produto</td>
<td>Nome Produto</td>
<td>Quantidade</td>
<td>Valor unitário</td>
</tr>
<c:forEach var="inv" items="$">
<tr>
<td>${inv.prod_id}</td>
<td>${inv.nome}</td>
<td><input type="text" value="1" size="2"></td>
<td>${inv.valor}</td>
</tr>
</c:forEach>
</table>
</form>
Aqui o controle
int cod = Integer.parseInt(request.getParameter("produto"));
ProdutoDao pd = new ProdutoDao();
List listaProduto = new ArrayList(); //para re-popular o select
try{
listaProduto = pd.listaGeralProdutos();
request.setAttribute("listaProduto",listaProduto);
List listaProdutoCod = pd.listaGeralProdutosCod(cod);
request.setAttribute("listaProdutoCod",listaProdutoCod);
request.getRequestDispatcher("nova_fatura.jsp").forward(request,response);
}catch(Exception ex){
System.out.println("Erro: "+ex.getMessage());
}
Como posso fazer isso dar certo??
Estou com dificuldade em entender como fazer o seguinte:
Tenho uma pagina que tem um select populado dinamicamente com informações do BD.
Tenho um botão que deve atualizar a pagina a adicionar o item selecionado em uma lista
Esta quase funcionando ... o problema é q quando adiciono um item ele subistitui o anterior, ou seja, nunca retorna mais de um item ...
esse é o jsp
<form method="POST" action="" name="f" id="f">
Produtos <select id="produto" name="produto">
<c:forEach var="i" items="$">
<option value="${i.prod_id}">${i.nome}</option>
</c:forEach><input type="button" value="Adicionar" onclick="add();"><br>
</select>
<table width="800px" border="2">
<tr>
<td>Cod Produto</td>
<td>Nome Produto</td>
<td>Quantidade</td>
<td>Valor unitário</td>
</tr>
<c:forEach var="inv" items="$">
<tr>
<td>${inv.prod_id}</td>
<td>${inv.nome}</td>
<td><input type="text" value="1" size="2"></td>
<td>${inv.valor}</td>
</tr>
</c:forEach>
</table>
</form>
Aqui o controle
int cod = Integer.parseInt(request.getParameter("produto"));
ProdutoDao pd = new ProdutoDao();
List listaProduto = new ArrayList(); //para re-popular o select
try{
listaProduto = pd.listaGeralProdutos();
request.setAttribute("listaProduto",listaProduto);
List listaProdutoCod = pd.listaGeralProdutosCod(cod);
request.setAttribute("listaProdutoCod",listaProdutoCod);
request.getRequestDispatcher("nova_fatura.jsp").forward(request,response);
}catch(Exception ex){
System.out.println("Erro: "+ex.getMessage());
}
Como posso fazer isso dar certo??
Cleiton Tavares.
Curtidas 0
Respostas
Dyego Carmo
26/01/2010
Boa Tarde !
soloque esta linha no seu controle:
System.out.println("Veja aqui "+ pd.listaGeralProdutos().size());
E roda a aplicação... e me manda o resultado que é impresso no console...
valeu !
soloque esta linha no seu controle:
System.out.println("Veja aqui "+ pd.listaGeralProdutos().size());
E roda a aplicação... e me manda o resultado que é impresso no console...
valeu !
GOSTEI 0
Cleiton Tavares.
26/01/2010
Diego,
o resultado é esse:
- Veja aqui 3
o resultado é esse:
- Veja aqui 3
GOSTEI 0
Dyego Carmo
26/01/2010
Cole aqui o HTML do resultado e cole o JSP COMPLETO tambem...
GOSTEI 0
Cleiton Tavares.
26/01/2010
Diego,
Seria pra aparecer aqui a lista:
<table width="800px" border="2">
<tr>
<td>Cod Produto</td>
<td>Nome Produto</td>
<td>Quantidade</td>
<td>Valor unitário</td>
</tr>
<c:forEach var="inv" items="$">
<tr>
<td>${inv.prod_id}</td>
<td>${inv.nome}</td>
<td><input type="text" value="1" size="2"></td>
<td>${inv.valor}</td>
</tr>
</c:forEach>
</table>
Seria pra aparecer aqui a lista:
<table width="800px" border="2">
<tr>
<td>Cod Produto</td>
<td>Nome Produto</td>
<td>Quantidade</td>
<td>Valor unitário</td>
</tr>
<c:forEach var="inv" items="$">
<tr>
<td>${inv.prod_id}</td>
<td>${inv.nome}</td>
<td><input type="text" value="1" size="2"></td>
<td>${inv.valor}</td>
</tr>
</c:forEach>
</table>
GOSTEI 0
Dyego Carmo
26/01/2010
Eu quero que voce poste o HTML que ele tah gerando I(NTEIRO... sem nenhum detalhe escondido...
E quero tmb o codigo fonte do JSP inteiro... cole em dois POSTS separados...
E quero tmb o codigo fonte do JSP inteiro... cole em dois POSTS separados...
GOSTEI 0
Cleiton Tavares.
26/01/2010
Diego,
Pra facilitar e como este projeto é somente para estudo, posso te mandar o projeto?
é bem simplório, somente pra aprender mesmo.
Abraço!
Pra facilitar e como este projeto é somente para estudo, posso te mandar o projeto?
é bem simplório, somente pra aprender mesmo.
Abraço!
GOSTEI 0
Dyego Carmo
26/01/2010
Sem duvidas , evie pelo seu DISCO VIRTUAL
OK ?
Estou no aguardo !
OK ?
Estou no aguardo !
GOSTEI 0
Cleiton Tavares.
26/01/2010
Diego,
Segue o link:
http://video.devmedia.com.br/discovirtual/216335/invoice_teste.rar
Abraço
Segue o link:
http://video.devmedia.com.br/discovirtual/216335/invoice_teste.rar
Abraço
GOSTEI 0
Dyego Carmo
26/01/2010
Preciso do DUMP do MySQL do seu banco de dados... senao nao consigo conectar...
GOSTEI 0
Cleiton Tavares.
26/01/2010
Dyego,
Segue abaixo o script do MySql
CREATE TABLE `faturas` (
`fat_id` int(11) NOT NULL AUTO_INCREMENT,
`prod_id` int(11) DEFAULT NULL,
`qtd` int(11) DEFAULT NULL,
`total` double DEFAULT NULL,
PRIMARY KEY (`fat_id`),
KEY `prod_id` (`prod_id`),
CONSTRAINT `faturas_ibfk_1` FOREIGN KEY (`prod_id`) REFERENCES `produtos` (`prod_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `produtos` (
`prod_id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) DEFAULT NULL,
`valor` double DEFAULT NULL,
PRIMARY KEY (`prod_id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
Segue abaixo o script do MySql
CREATE TABLE `faturas` (
`fat_id` int(11) NOT NULL AUTO_INCREMENT,
`prod_id` int(11) DEFAULT NULL,
`qtd` int(11) DEFAULT NULL,
`total` double DEFAULT NULL,
PRIMARY KEY (`fat_id`),
KEY `prod_id` (`prod_id`),
CONSTRAINT `faturas_ibfk_1` FOREIGN KEY (`prod_id`) REFERENCES `produtos` (`prod_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE `produtos` (
`prod_id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) DEFAULT NULL,
`valor` double DEFAULT NULL,
PRIMARY KEY (`prod_id`)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=latin1;
GOSTEI 0
Dyego Carmo
26/01/2010
Sua servlet de adicao estava errada...
http://video.devmedia.com.br/discovirtual/202707/invoice_teste.zip
http://video.devmedia.com.br/discovirtual/202707/invoice_teste.zip
GOSTEI 0
Cleiton Tavares.
26/01/2010
Dyego,
Funcionou blz aqui...mas fiquei com algumas duvidas...Mais precisamente nesta parte:
List lista = (List) request.getSession().getAttribute("listaItens");
if (lista == null) {
lista = new LinkedList();
request.getSession().setAttribute("listaItens", lista);
}
lista.addAll(listaItens);
De onde esta vindo esse atributo listaItens na 1ª linha?? do proprio Servlet??
Obrigado pela atenção!
Funcionou blz aqui...mas fiquei com algumas duvidas...Mais precisamente nesta parte:
List lista = (List) request.getSession().getAttribute("listaItens");
if (lista == null) {
lista = new LinkedList();
request.getSession().setAttribute("listaItens", lista);
}
lista.addAll(listaItens);
De onde esta vindo esse atributo listaItens na 1ª linha?? do proprio Servlet??
Obrigado pela atenção!
GOSTEI 0
Dyego Carmo
26/01/2010
Na realidade eu "tento" pegar a lista se ela já estiver definida na sessao (no caso do cara jah ter adicionado algum produto)
Se nao existir (retornar null) eu crio uma lista e adiciono lá...
senao eu apenas continuo...
Ae eu pego e adiciono o item dentro dessa lista :)
OK ?
Se nao existir (retornar null) eu crio uma lista e adiciono lá...
senao eu apenas continuo...
Ae eu pego e adiciono o item dentro dessa lista :)
OK ?
GOSTEI 0
Cleiton Tavares.
26/01/2010
Blz Dyego,
Agora saquei ... valeu ai cara ...
Agora vou quebrar a cabeça pra colocar ajax nisso : )
Obrigado!!!
Agora saquei ... valeu ai cara ...
Agora vou quebrar a cabeça pra colocar ajax nisso : )
Obrigado!!!
GOSTEI 0