Fórum Adicionar itens a uma lista já existente #14611

26/01/2010

0

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??
Cleiton Tavares.

Cleiton Tavares.

Responder

Posts

26/01/2010

Dyego Carmo

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 !

Responder

Gostei + 0

26/01/2010

Cleiton Tavares.

Diego,

o resultado é esse:

- Veja aqui 3

Responder

Gostei + 0

26/01/2010

Dyego Carmo

Cole aqui o HTML do resultado e cole o JSP COMPLETO tambem...

Responder

Gostei + 0

26/01/2010

Cleiton Tavares.

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>  
Responder

Gostei + 0

26/01/2010

Dyego Carmo

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...

Responder

Gostei + 0

26/01/2010

Cleiton Tavares.

Diego,

Pra facilitar e como este projeto é somente para estudo, posso te mandar o projeto?
é bem simplório, somente pra aprender mesmo.

Abraço!
Responder

Gostei + 0

26/01/2010

Dyego Carmo

Sem duvidas , evie pelo seu DISCO VIRTUAL

OK ?

Estou no aguardo !

Responder

Gostei + 0

26/01/2010

Cleiton Tavares.

Diego,

Segue o link:

http://video.devmedia.com.br/discovirtual/216335/invoice_teste.rar

Abraço
Responder

Gostei + 0

27/01/2010

Dyego Carmo

Preciso do DUMP do MySQL do seu banco de dados... senao nao consigo conectar...

Responder

Gostei + 0

27/01/2010

Cleiton Tavares.

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;


Responder

Gostei + 0

27/01/2010

Dyego Carmo

Sua servlet de adicao estava errada...

http://video.devmedia.com.br/discovirtual/202707/invoice_teste.zip

Responder

Gostei + 0

27/01/2010

Cleiton Tavares.

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!



Responder

Gostei + 0

27/01/2010

Dyego Carmo

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 ?

Responder

Gostei + 0

27/01/2010

Cleiton Tavares.

Blz Dyego,

Agora saquei ... valeu ai cara ...

Agora vou quebrar a cabeça pra colocar ajax nisso : )

Obrigado!!!
Responder

Gostei + 0

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

Aceitar