Problema Servlet e JSP ( retorna mesmo resultado)

Meu Servlet

Nele é feito uma pesquisa no meu Banco de Dados

select * from erros where descricao like ‘%erro%’

eu retorno um Objeto

request.setAttribute(“pesquisa_de_erros”, list_erros); request.getRequestDispatcher(“Pesquisa_Erros.jsp”).forward(request, response);

ArrayList list_erros = new ArrayList() ;
Erros é um Objeto com os atributos encapsulados.

Bom, no Meu JSP:

<%

   ArrayList<Erros> list_Erros = null;
   list_Erros = (ArrayList)request.getAttribute("pesquisa_de_erros");

if (request.getAttribute(“msg”)==“Nenhum erro encontrado!”) { %>

        <%= request.getAttribute("msg") %>
 <%  } else if (list_Erros != null) {
            for (int i = 0; i < list_Erros.size(); i++) {%>  
<td width="119"><%= list_Erros.get(i).getCodigo()%> </td>
<td width="152"><%= list_Erros.get(i).getDescricao()%></td>
<td width="152"><%= list_Erros.get(i).getSup_codigo() %></td>
<td width="152"><%= list_Erros.get(i).getSoftware()%></td>
</tr>
<%}
   }%>

Acontece o seguinte, supondo que minha pesquisa encontrou 8 resultados
é criado 8 linhas na minha tabela porem imprime como resultado 8 vezes a ultima tupla da da minha consulta.
NO servlet eu debuguei e esta adicionando na minha lista corretamente.

( Sei que ta dificl de entender ai … )

Desde já agradeço !

Tente fechar o for antes do . Se não der, não sei. Você pode pesquisar um pouco sobre o displaytag que é uma taglib responsável por fazer essas tabelas. Nela você apenas passa uma lista e cria as propriedades e ele ja lista tudo para você numa tabela.

[quote=galoneti]Meu Servlet

Nele é feito uma pesquisa no meu Banco de Dados

select * from erros where descricao like ‘%erro%’

eu retorno um Objeto

request.setAttribute(“pesquisa_de_erros”, list_erros); request.getRequestDispatcher(“Pesquisa_Erros.jsp”).forward(request, response);

ArrayList list_erros = new ArrayList() ;
Erros é um Objeto com os atributos encapsulados.

Bom, no Meu JSP:

<%

   ArrayList<Erros> list_Erros = null;
   list_Erros = (ArrayList)request.getAttribute("pesquisa_de_erros");

if (request.getAttribute(“msg”)==“Nenhum erro encontrado!”) { %>

        <%= request.getAttribute("msg") %>
 <%  } else if (list_Erros != null) {
            for (int i = 0; i < list_Erros.size(); i++) {%>  
<td width="119"><%= list_Erros.get(i).getCodigo()%> </td>
<td width="152"><%= list_Erros.get(i).getDescricao()%></td>
<td width="152"><%= list_Erros.get(i).getSup_codigo() %></td>
<td width="152"><%= list_Erros.get(i).getSoftware()%></td>
</tr>
<%}
   }%>

Acontece o seguinte, supondo que minha pesquisa encontrou 8 resultados
é criado 8 linhas na minha tabela porem imprime como resultado 8 vezes a ultima tupla da da minha consulta.
NO servlet eu debuguei e esta adicionando na minha lista corretamente.

( Sei que ta dificl de entender ai … )

Desde já agradeço ![/quote]
Primeiro, utilize isso: http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor
Segundo, como está fazendo a inserção dos objetos na List? Posta o trecho entre o select e o response…

boa tarde!

estou exatamente com o mesmo problema!

nao sei se tem a ver mas seria algo com o LIKE do comando SQL?

o que eu imagino que o compilador faça é:

ele acha o primeiro resultado que vier no select e grava na lista.

quando ele volta pro .next() no while ele reinicia a busca e ao inves de ir pro proximo resultado ele acha novamente o primeiro resultado que vem do select e grava na lista

enquanto houver registro ele sempre vai ficar pegando o primeiro registro que coincida com o que esta entre as % % no like e gravar na lista

nao sei…posso ta viajando bunito na maionese mas…

ja troquei o comando sql pra usar condiçao “where id = ?” por exemplo e foi de boa

tem de ser feito algum tipo de controle pra saber o q ja esta na lista?

Depois dessa minha viagem tentando entender o que o compilador faz dei uma pesquisada sobre exemplos de List e vi o seguinte.

No meu servlet estava assim:

                       Setor setor = new Setor();

			while(rs.next()){ 
				setor.setIdSetor(rs.getInt("ID_SETOR"));
				setor.setNomeSetor(rs.getString("SET_NOMESETOR"));
				setor.setAgenda(rs.getString("SET_AGENDA"));
			
				listaSetor.add(setor);
			}

Com isso eu criava apenas um objeto do tipo setor e a cada iteração o resultado era sobreposto sendo que o certo é a cada iteração criar um novo objeto setor e assim adicionar cada resultado que vem do bd

			while(rs.next()){ 
                               Setor setor = new Setor();

				setor.setIdSetor(rs.getInt("ID_SETOR"));
				setor.setNomeSetor(rs.getString("SET_NOMESETOR"));
				setor.setAgenda(rs.getString("SET_AGENDA"));
			
				listaSetor.add(setor);
			}

Sei que o tópico é velho e tals mas vamos ver se resolve a dúvida do amigo ae.

abs

[quote=gabriel_nunes]Depois dessa minha viagem tentando entender o que o compilador faz dei uma pesquisada sobre exemplos de List e vi o seguinte.

No meu servlet estava assim:

                       Setor setor = new Setor();

			while(rs.next()){ 
				setor.setIdSetor(rs.getInt("ID_SETOR"));
				setor.setNomeSetor(rs.getString("SET_NOMESETOR"));
				setor.setAgenda(rs.getString("SET_AGENDA"));
			
				listaSetor.add(setor);
			}

Com isso eu criava apenas um objeto do tipo setor e a cada iteração o resultado era sobreposto sendo que o certo é a cada iteração criar um novo objeto setor e assim adicionar cada resultado que vem do bd

			while(rs.next()){ 
                               Setor setor = new Setor();

				setor.setIdSetor(rs.getInt("ID_SETOR"));
				setor.setNomeSetor(rs.getString("SET_NOMESETOR"));
				setor.setAgenda(rs.getString("SET_AGENDA"));
			
				listaSetor.add(setor);
			}

Sei que o tópico é velho e tals mas vamos ver se resolve a dúvida do amigo ae.

abs[/quote]

Adiciona ao título do tópico: [Resolvido]