seguinte tenho um metodo que funciona certo
public Produto Consultar(Integer id_produto) {
String sql = "SELECT * FROM produto WHERE id_produto = ?";
try {
PreparedStatement stmt = getConexao().prepareStatement(sql);
stmt.setInt(1, id_produto);
ResultSet rs = stmt.executeQuery();
List<Produto> lista = getProduto(rs);
if(lista.size() > 0)
return lista.get(0);
} catch (SQLException sQLException) {
System.out.println("Erro ao consultar Produto");
}
return null;
}
no servlet tenho o seguinte
if (act.equals("preenche_campo_alterar")) {
Integer id_produto = (Integer.parseInt(request.getParameter("id_produto")));
ProdutoDao pro = new ProdutoDao();
Produto lista = pro.Consultar(id_produto); essa funcao me retorna uma lista com somente 1 elemento
// for(Produto prod:lista){ se eu usar o for da erro foreach not applicable to expression type
request.setAttribute("lista",lista);
request.getRequestDispatcher("Produto_Alterar.jsp").forward(request,response);
// }
}
e no JSP tenho o sequinte
<%
List<Produto> lista = (List<Produto>) request.getAttribute("lista"); //aqui nao sei se é assim que recebe a lista do servlet
Produto pro = lista.get(0);
Integer idc = pro.getid_produto();
String nome_produto = pro.getnome_produto();
Integer quant_produto = pro.getquant_produto();
Double valor_produto = pro.getvalor_produto();
%>
nao estou conseguindo passar do servlet para o jsp uma lista se alguem ajudar valeu
alterei o seguinte
if (act.equals("preenche_campo_alterar")) {
Integer id_produto = (Integer.parseInt(request.getParameter("id_produto")));
ProdutoDao pro = new ProdutoDao();
List<Produto> lista = pro.listar(id_produto);
//Produto lista = pro.Consultar(id_produto);
for(Produto prod:lista){
request.setAttribute("lista",lista);
request.getRequestDispatcher("Produto_Alterar.jsp").forward(request,response);
}
}
<%
List<Produto> lista = (List<Produto>) request.getAttribute("lista");
Produto pro = lista.get(0);
Integer idc = pro.getid_produto();
String nome_produto = pro.getnome_produto();
Integer quant_produto = pro.getquant_produto();
Double valor_produto = pro.getvalor_produto();
%>
assim funciona beleza mas a questao é so posso passar do servelt uma lista declarando
List<Produto> lista = pro.listar(id_produto); esse pro.listar(id_produto) retorna toda a lista sem saber o tamanho dela
e usando
for(Produto prod:lista){
request.setAttribute("lista",lista);
request.getRequestDispatcher("Produto_Alterar.jsp").forward(request,response);
}
assim funciona mas eu quero passar somente a lista.get(0);
por isso tentei fazer o seguinte
Produto lista = pro.Consultar(id_produto); sendo que esse consultar retorna uma lista.get(0);
e dae da erro ai a duvida???????
interresante isso tu fazendo um List<Produto> lista = pro.listar(id_produto); da certo e fazendo um
Produto lista = pro.Consultar(id_produto); da erro e eu sei que veio somente 1 posicao na lista pelo select feito
Olá
No seu servlet:
ProdutoDao pro = new ProdutoDao();
List<Produto> lista = pro.listar(id_produto);
// Assim vc manda a lista, dai na sua jsp o cast fica List<Produto>
request.setAttribute("lista",lista);
// Porém se vc passar assim
ProdutoDao pro = new ProdutoDao();
List<Produto> lista = pro.listar(id_produto);
Produto produto = lista.get(0);
// Assim vc manda um objeto (o primeiro da lista), dai seu cast na jsp fica Produto
request.setAttribute("lista",produto );
Verificando melhor seu código tem um for antes do getRequestDispatcher
"for(Produto prod:lista){
request.setAttribute("lista",lista);
request.getRequestDispatcher("Produto_Alterar.jsp").forward(request,response);
}
"
Esta meio estranho, se vc quiser tenta uma das soluções acima!!!
Espero ter ajudado
Flwsss
isso ai cara mais uma vez corretissimo nao presisa de for nen nada funciona beleza valeu denovo obrigado!!!!
List<Produto> lista = (List<Cliente>) request.getAttribute("lista");
for(Produto prod:lista) { //lista com tamanho indeterminado
----
}
ou
Produto pro = (Produto) request.getAttribute("lista"); //essa linha esta esperando uma lista.get(0);
meu castingno jsp funciona beleza qualquer um dos 2 valeu !!!!!!!!!!!!!!!!