quinta-feira, 23 de janeiro de 2014

Re: [java-br] carregando dados do banco em comboxbox em jsp com jstl e servlet

·

 

Bom dia Fabiano, então o problema descrito acima é que os dados contendo da tabela estados não estão sendo carregados no combobox, somente depois da requisição (clicar no botão).
O método buscaEstados da classe DAO esta funcionando, fiz o teste separado imprimindo no console, esta ok.
Minha dificuldade então é fazer com que os estados seja carregados no combobox usando JSP, JSTL e Servlet.
P.S não quero ter que misturar código Java dentro do JSP, por isso preferi usar JSTL que faz forEarch e no meu Servlet coloquei o código abaixo.

Servlet
             String nome = request.getParameter("nome");
             String email = request.getParameter("email");
             String fone = request.getParameter("cel");
             String siglauf = request.getParameter("states");
            
             pd = new PessoaDAO();
             List<Estados> listaestados = pd.buscaEstados(); //executa o método da classe DAO retornando uma lista
             request.setAttribute("listaestados", listaestados); //joga atribuição para ser usado no JSTL no JSP forEarch conforme segue
JSP
<select name="states">
       <c:forEach var="listaestados" items="${listaestados}" >
                  <option value="${listaestados.uf}">
                       <c:out value="${listaestados.uf} - " />
                    <c:out value="${listaestados.nomeEstado}" />
                  </option>
       </c:forEach>
           
        </select>

Mas nesse caso não esta sendo carregados os estados no combobox, só depois da requisição.

Então é isso, se puder ajudar agradeço.
Obrigado.






Em Quarta-feira, 22 de Janeiro de 2014 17:40, Fabiano Silva e Silva <fabianoss@gmail.com> escreveu:
 
Reginaldo, acho que vc precisa separar a busca de estados antes de chamar essa página assim sua Lista estará polulada.
Em 22/01/2014 13:10, "Reginaldo Matias" <matias_reginaldo@yahoo.com.br> escreveu:
 
Veja se consegue ajudar na seguinte situação.
Tipo consegui fazer pegar os dados do banco no combobox, mas só fica depois que preenche os campos e clica no botão, ou seja, depois da requisição, mas o correto é visualizar os dados junto com o formulário.

Segue parte dos fontes que estou fazendo separado

Entidade
package br.com.saitam.modelo;

public class Estados {
   private String uf;
   private String nomeEstado;
   
   public String getUf()
   {
   return uf;
   }
   public void setUf(String uf2)
   {
   this.uf = uf2;
   }
   public String getNomeEstado()
   {
   return nomeEstado;
   }
   public void setNomeEstado(String nomeEstado2)
   {
   this.nomeEstado = nomeEstado2;
   }
}


DAO
public List<Estados> buscaEstados() throws Exception{
open();
String sqlEstados = "SELECT uf, desc_uf from estados";
stmt = con.prepareStatement(sqlEstados);
rs = stmt.executeQuery();
List<Estados> ListaEstados = new ArrayList<Estados>();
while(rs.next())
{
Estados e = new Estados();
e.setUf(rs.getString("uf"));
e.setNomeEstado(rs.getString("desc_uf"));
ListaEstados.add(e);
}
close();
return ListaEstados;
}

Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
   {
   try{
         String nome = request.getParameter("nome");
         String email = request.getParameter("email");
         String fone = request.getParameter("cel");
         String siglauf = request.getParameter("states");
         
         pd = new PessoaDAO();
    listaestados = pd.buscaEstados();
         request.setAttribute("listaestados", listaestados);
 request.getRequestDispatcher("cadastro.jsp").forward(request, response);
         
         
         if(nome == null || email == null || fone == null){
          request.setAttribute("msg", "Erro campos não preenchidos!");  
         request.getRequestDispatcher("cadastro.jsp").forward(request, response);
         }
         else{  
          
          e = new Estados();
          p = new Pessoa(nome,email,fone,e.setUf(siglauf)); /salva chave estrangeira fk_uf na table pessoa com relacionamento table estados
          pd = new PessoaDAO();  
         pd.cadastro(p);  
              
         request.setAttribute("msg", "Gravado com sucesso!");  
         request.getRequestDispatcher("cadastro.jsp").forward(request, response);  
         } 
      }catch (Exception e) {  
         request.setAttribute("msg", "Erro: " + e.getMessage());  
         request.getRequestDispatcher("cadastro.jsp").forward(request, response);  
      }  
  }
}
JSP com JSTL
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cadastro de Contatos</title>
</head>
<body>
<h2>Cadastrar</h2>
<form method="POST" action="EnviarDados">
<label for="nome">Nome: </label> 
<input type="text" id="nome" required name="nome"> <br> 
<label for="email">E-mail: </label> 
<input type="email" id="email" required name="email"> <br> 
<label for="cel">Celular:(ddd) xxxx-xxxx </label> <input type="tel" id="cel" required name="cel" pattern="\([0-9]{2}\)[\s][0-9]{4}-[0-9]{4}">
<br> 
<label for="states">Estados: </label>
<select name="states">
   <c:forEach var="listaestados" items="${listaestados}" >
           <option value="${listaestados.uf}">
                <c:out value="${listaestados.uf} - " />
                    <c:out value="${listaestados.nomeEstado}" /> 
           </option>
       </c:forEach>
</select> <br><br>
<input type="submit" value="Cadastrar"> 
<input type="reset" value="Limpar"> <br>
</form>
<br> ${msg}
</body>
</html>


Então, olhe com calma os fontes acima e informe correção.

valeu!


__._,_.___
Atividade nos últimos dias:
Para sair da lista, envie email para: java-br-unsubscribe@yahoogroups.com
Para upload/download de arquivos: http://www.yahoogroups.com/files/java-br
.

__,_._,___

0 comentários:

Pague com LPs do Mister Colibri

Pague com LPs do Mister Colibri
Quer comprar celular,Tablet,pen drive, GPS e muito outros produtos e ainda podendo pagar tudo em LPs ?Pois saiba que isso é possível,basta você visitar o site downloadstotal.com e realizar a sua compra com toda tranquilidade e segurança!!!

Hora

Online

Arquivo do Blog