ArrayList na Session

9 respostas
mor

galera é o seguinte…
estou fazendo uma pesquisa e qdo clico no submit meu form chama um Servlet…
este Servlet faz a pesquisa, retorna o resultado na forma d uma ArrayList
e inclui esta ArrayList na Session para que eu possa recuperar depois e mostrar na tela…
soh q qdo recupero ela vem vazia…naum entra no for q fiz pra percorrer ela…
parte do meu código está neste link…pra ficar melhor d vcs entenderem…
obrigado…

http://www.4shared.com/file/61763830/942ce8cb/Daniel.html

9 Respostas

yoshikichi

mor@es:
galera é o seguinte…
estou fazendo uma pesquisa e qdo clico no submit meu form chama um Servlet…
este Servlet faz a pesquisa, retorna o resultado na forma d uma ArrayList
e inclui esta ArrayList na Session para que eu possa recuperar depois e mostrar na tela…
soh q qdo recupero ela vem vazia…naum entra no for q fiz pra percorrer ela…
parte do meu código está neste link…pra ficar melhor d vcs entenderem…
obrigado…

http://www.4shared.com/file/61763830/942ce8cb/Daniel.html

ow coloca no req, mas, tentei abaixar o arquivo http://www.4shared.com/file/61763830/942ce8cb/Daniel.htm
a faculdade bloquei aqui, posta seu codigo aqui blz.
falow

mor
ta aew kra…desde já obrigado

//função que faz a pesquisa e retorna a ArrayList

public ArrayList getLista(String sPesq) throws SQLException{

String SQL = new String();

SQL = “SELECT * FROM PRODUTOS WHERE PRO_DES LIKE (?) ORDER BY PRO_DES”;

PreparedStatement stmt = this.con.prepareStatement(SQL);

stmt.setString(1,"’%"+sPesq+"%’");

ResultSet rs = stmt.executeQuery();

ArrayList produtos = new ArrayList();

while (rs.next()){

Produto produto = new Produto();

produto.setPRO_COD(rs.getString(“PRO_COD”));

produto.setPRO_DES(rs.getString(“PRO_DES”));

produto.setPRO_PRE(rs.getFloat(“PRO_PRE”));

produtos.add(produto);

}

return produtos;

}
//Servlet que chama a função acima e add o resultado na session

try {

ArrayList produtos = new ArrayList();

ProdutoDAO Produtos = new ProdutoDAO();

produtos = Produtos.getLista(request.getParameter(busca));

HttpSession sessao = request.getSession();

sessao.setAttribute(pesquisa,produtos);

request.getRequestDispatcher(pecas.jsp).forward(request, response);

} catch (Exception e){

out.println(ERRO+e.getMessage());

}
//página jsp q usa a ArrayList para imprimir o resultado da pesquisa

if (sessao.getAttribute(pesquisa) != null){

ArrayList produtos = new ArrayList();

produtos = (ArrayList) sessao.getAttribute(pesquisa);

DecimalFormat formatador = new DecimalFormat();

formatador.applyPattern("###,##0.00");

out.println("
");
for (int i = 0; i < produtos.size(); i++){
Produto produto = new Produto();
produto = produtos.get(i);
if (i%2 == 0)
out.println("");
}
out.println("
");
else
out.println("
");
out.println(produto.getPRO_DES());
out.println("
");
out.println(formatador.format(produto.getPRO_PRE()));
out.println("
");
}
VinicerasMG

mor@es,
eu não analisei muito bem seu código com atenção, mas das vezes que isto acontecia comigo era algum problema na própria consulta… tente varrer o array imprimindo o conteúdo na console e posta ai se a consulta está ok…

yoshikichi

VinicerasMG:
mor@es,
eu não analisei muito bem seu código com atenção, mas das vezes que isto acontecia comigo era algum problema na própria consulta… tente varrer o array imprimindo o conteúdo na console e posta ai se a consulta está ok…

ow e ai blz?
Então seu List esta vazio pq a consulta nao deve estar retornando nada.
Tenta ver se o ResultSet esta populado apos a consulta.
só uma pergunta, pq vc nao coloca no request em vez da sessao?
falow

mor

soh c estou passando o parâmetro errado…
estou passando assim…
select * from produtos where pro_des like (?)
e alimento o parâmetro com ‘%+a string q o usuário digita+%’
será q está correto?
como assim usar o request?
obrigado

mor

Galera consegui…estava passando o parametro d forma errada no comando like…
mas yoshikichi ainda estou curioso para saber como usar apenas o request no retorno do Servlet…
c puder posta aew…
muito obrigado pela atenção galera

yoshikichi

mor@es:
Galera consegui…estava passando o parametro d forma errada no comando like…
mas yoshikichi ainda estou curioso para saber como usar apenas o request no retorno do Servlet…
c puder posta aew…
muito obrigado pela atenção galera

req.setAttribute(“assim”, lista);

lmprates

mor@es quando postar seus códigos use a tag code.
Dê uma olhada nas regras do fórum tb.

Sugestão: procure não utilizar o session para passar dados para a camada view.
Cada vez que você coloca algo no session, está ocupando a memória do servidor, se você tiver 5 utilizar que busquem a lista inteira do banco de dados, o servidor já vai começar a ficar lento, pois terá 5 listas gigantescas em memória.
Procure sempre passar os parâmetros pelo request, como mostrou o yoshikichi.

mor

valew pelas dicas galera…t+

Criado 4 de setembro de 2008
Ultima resposta 11 de set. de 2008
Respostas 9
Participantes 4