Como extrair do banco as opçoes para o <select> com uma já selecionada?

8 respostas
DaniloCRF

Boa tarde , eu leio bastante esse fórum e já me ajudou bastante, eu to com uma dúvida que creio que seja bem básica mesmo, mas não to conseguindo resolver de jeito nenhum.

Eu estou fazendo um projeto com o CRUD completo, to com ele quase completo, só estou com problemas para passar o valor do banco com uma opção selecionada no ficou dessa forma e da erro 500 na JSP, exatamente no equals.

DaniloCRF

al.barbosa, obrigado pela ajuda, consegui fazer.. vê ae o que achou! Vou botar aqui como ficou o código caso alguem tenha uma dúvida parecida.

Categoria:
	<select name="categoria">
	<% 
	
	List<Categoria> lista = new CategoriaDao().findAll();
	
	Produto p = (Produto) request.getAttribute("produto");
		
		for(Categoria c : lista){
	if(p.getCategoria().getIdCategoria().equals(c.getIdCategoria())){
		out.print("<option value='" + p.getCategoria().getIdCategoria()+"' selected>"   
                + p.getCategoria().getNomeCategoria() + "</option>");
	
			
			
		}else{
			out.print("<option value='" + c.getIdCategoria()+"'>"   
	                + c.getNomeCategoria() + "</option>");
		
		
		}
		}
		
	
	%>
	</select>
al.barbosa

Beleza, parabéns!

Uma outra forma de fazer é passar a lista de categorias como atributo no servlet.

Você pode também usar expressões JSP, que são no formato:
<%= expressao %>
São semelhantes a scriptlets, mas jogam o resultado na saída. Aí você não precisa usar o out.print().

Pela sugestão, teria o seguinte no servlet:

request.setAttribute("produto", new ProdutoDao().findById(idProduto)); 
request.setAttribute("lista", new CategoriaDao().findAll());     //passo a lista de categorias como atributo
request.getRequestDispatcher("edicao.jsp").forward(request,response);

e no JSP, teria mais ou menos o seguinte:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="modelo.Categoria"%>
<jsp:useBean id="produto" 
             scope="request" 
             class="modelo.Produto"/>

<!-- Aqui crio o bean com a lista de categorias recebida do servlet - só precisa corrigir o pacote da classe categoria --> 
<jsp:useBean id="lista" 
             scope="request" 
             class="java.util.List<modelo.Categoria>"/>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    
    <body>
        
    <form action="Controle?cmd=editar1" name="form1" method="post">  
    Nome:  
    <input type="text" name="nome" size="25"  
    value="${produto.nome}" />  
    <p />  
    Categoria:
    <SELECT NAME="categoria">
        <% for(Categoria c : lista){ %>
            <OPTION VALUE="<%=c.getIdCategoria()%>"
            <%= c.getIdCategoria().equals( produto.getCategoria().getIdCategoria() ) ? " SELECTED " : "" %> >
            <%= c.getNomeCategoria() %>
            </OPTION>   
        <% } %>
    </SELECT>
    <p />  
    <input type="button" value="Editar" />      
    </form> 
    </body>
</html>
DaniloCRF

Show de bola! Chegando em casa eu testo dessa maneira também, obrigado ae pela atenção!

Criado 5 de julho de 2012
Ultima resposta 6 de jul. de 2012
Respostas 8
Participantes 2