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]