Tutorial DWR Combos Dependentes Por Alexandre Soli
Ferramentas A versão do DWR utilizada neste tutorial e a 2.0.5 (funciona com Java 1.3 em diante) e pode ser encontrada no link abaixo: http://directwebremoting.org/dwr/download TOMCAT 5.5 como servidor web Java 6 Eclipse 3.4.1 Se você não sabe por onde começar, dê uma olhada no tutorial de configuração e uso básico http://alexandresoli.wordpress.com/2009/05/14/tutorial-dwr/
Exemplo  – Estados vs Cidades Problema:  Você precisa que sua lista de cidades mude de acordo com o estado selecionado. Como fazer?
Coloque a entrada abaixo no dwr.xml. <dwr> <allow>  <!-- Declaracao da classe que ira responder as requisicoes AJAX --> <create creator= &quot;new&quot;  javascript= &quot;ExemploLookup&quot; > <param name= &quot;class&quot;  value= &quot;br.com.neoimage.ExemploLookup&quot;  /> </create> <!-- Irá responder as requisicoes AJAX para o exemplo de combos dependentes --> <create creator= &quot;new&quot;  javascript= &quot;CombosDependentesLookup&quot; > <param name= &quot;class&quot;  value= &quot;br.com.neoimage.CombosDependentesLookup&quot;  /> </create> <!-- Utilizado para conversao de objetos javascript/java --> <convert converter= &quot;bean&quot;  match= &quot;br.com.neoimage.usuario.Usuario&quot; /> <convert converter= &quot;bean&quot;  match= &quot;br.com.neoimage.localizacao.Estado&quot; /> <convert converter= &quot;bean&quot;  match= &quot;br.com.neoimage.localizacao.Cidade&quot; /> </allow> </dwr>
Crie a classe Estado package br.com.neoimage.localizacao; import java.util.ArrayList; import java.util.List; public class Estado { private Integer codigo; private String nome;   public List<Estado> listar() {   List<Estado> listaEstados = new ArrayList<Estado>();   Estado estado = new Estado();   estado.setCodigo(12);   estado.setNome(&quot;São Paulo&quot;);   listaEstados.add(estado);   estado.setCodigo(24);   estado.setNome(&quot;Rio de Janeiro&quot;);   listaEstados.add(estado);   return listaEstados; } // getters e setters... }
Crie a classe CombosDependentesLookup package br.com.neoimage; import java.util.ArrayList; import java.util.List; import br.com.neoimage.localizacao.Cidade; import br.com.neoimage.localizacao.Estado; public class CombosDependentesLookup { public List<Cidade> obterCidades(Estado estado) { Cidade cidade = new Cidade(); List<Cidade> listaCidades = new ArrayList<Cidade>(); listaCidades = cidade.listar(estado); return listaCidades; } }
Crie a classe Cidade package br.com.neoimage.localizacao; import java.util.ArrayList; import java.util.List; public class Cidade { private Integer codigo; private String nome; public List<Cidade> listar(Estado estado) { List<Cidade> listaCidades = new ArrayList<Cidade>(); Cidade cidade = new Cidade(); if (estado.getCodigo().equals(24)) { cidade.setCodigo(1); cidade.setNome(&quot;ANGRA DOS REIS&quot;); listaCidades.add(cidade); cidade = new Cidade(); cidade.setCodigo(2); cidade.setNome(&quot;APERIBÉ&quot;); listaCidades.add(cidade); listaCidades.add(cidade); } else if (estado.getCodigo().equals(12)) { cidade.setCodigo(21); cidade.setNome(&quot;PRESIDENTE PRUDENTE&quot;); listaCidades.add(cidade); cidade = new Cidade(); cidade.setCodigo(22); cidade.setNome(&quot;ADAMANTINA&quot;); listaCidades.add(cidade); listaCidades.add(cidade); }  return listaCidades; } // getters e setters... }
Adicione a entrada abaixo no web.xml: <servlet> <servlet-name>ServletCombosDependentes</servlet-name> <servlet-class> br.com.neoimage.ServletCombosDependentes</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletCombosDependentes</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
Crie a classe  ServletCombosDependentes package br.com.neoimage; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.neoimage.localizacao.Estado; public class ServletCombosDependentes extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Estado estado = new Estado(); List<Estado> listaEstados = estado.listar(); request.setAttribute(&quot;listaEstados&quot;, listaEstados); RequestDispatcher rd = request.getRequestDispatcher(&quot;/combos-dependentes.jsp&quot;); rd.forward(request, response); } }
Crie o jsp combos-dependentes.jsp <%@ taglib uri= &quot;http://java.sun.com/jsp/jstl/core&quot;  prefix= &quot;c&quot;  %> <html> <head> <script type= 'text/javascript'  src= '/tutorial-dwr/dwr/interface/CombosDependentesLookup.js' ></script> <script type= 'text/javascript'  src= '/tutorial-dwr/dwr/engine.js' ></script> <script type= 'text/javascript'  src= '/tutorial-dwr/dwr/util.js' ></script> <script language= &quot;javascript&quot; > function  carregarCidades() { var  estado =  new  Object(); estado.codigo = document.getElementById(&quot;comboEstados&quot;). value ; CombosDependentesLookup . obterCidades (estado, function (data) { dwr.util. removeAllOptions (&quot;comboCidades&quot;); dwr.util. addOptions (&quot;comboCidades&quot;, {&quot;0&quot;:&quot;Selecione...&quot;}); dwr.util. addOptions (&quot;comboCidades&quot;, data, &quot;codigo&quot;, &quot;nome&quot;); }); } </script> </head> <body> <label>Estados</label> <select name= &quot;comboEstados&quot;  id= &quot;comboEstados&quot;  onchange= &quot;carregarCidades();&quot; >  <option value= &quot;0&quot; >Selecione...</option> <c:forEach var= &quot;estado&quot;  items=&quot;${listaEstados}&quot;> <optionvalue=&quot;<c:out value=&quot;${estado.codigo}&quot; />&quot;><c:out value=&quot;${estado.nome}&quot; /> </option> </c:forEach> </select> <label>Cidades</label> <select id= &quot;comboCidades&quot;  >  <option value= &quot;0&quot; >Selecione...</option> <c:forEach var= &quot;cidade&quot;  items=&quot;${listaCidades}&quot;> <optionvalue=&quot;<c:out value=&quot;${cidade.codigo}&quot; />&quot;><c:out value=&quot;${cidade.nome}&quot; /> </option> </c:forEach> </select>  </body> </html>
Testando as combos dependentes Inicie o servidor e aponte para o endereço abaixo http://localhost:8080/tutorial-dwr/servlet/ServletCombosDependentes Os valores da combo de cidades irá mudar de acordo com o Estado selecionado.
Dúvidas ou comentários? Envie um email para  [email_address]   Visite meu blog para mais dicas e tutorias http://alexandresoli.wordpress.com

Tutorial Dwr - Combos Dependentes

  • 1.
    Tutorial DWR CombosDependentes Por Alexandre Soli
  • 2.
    Ferramentas A versãodo DWR utilizada neste tutorial e a 2.0.5 (funciona com Java 1.3 em diante) e pode ser encontrada no link abaixo: http://directwebremoting.org/dwr/download TOMCAT 5.5 como servidor web Java 6 Eclipse 3.4.1 Se você não sabe por onde começar, dê uma olhada no tutorial de configuração e uso básico http://alexandresoli.wordpress.com/2009/05/14/tutorial-dwr/
  • 3.
    Exemplo –Estados vs Cidades Problema: Você precisa que sua lista de cidades mude de acordo com o estado selecionado. Como fazer?
  • 4.
    Coloque a entradaabaixo no dwr.xml. <dwr> <allow> <!-- Declaracao da classe que ira responder as requisicoes AJAX --> <create creator= &quot;new&quot; javascript= &quot;ExemploLookup&quot; > <param name= &quot;class&quot; value= &quot;br.com.neoimage.ExemploLookup&quot; /> </create> <!-- Irá responder as requisicoes AJAX para o exemplo de combos dependentes --> <create creator= &quot;new&quot; javascript= &quot;CombosDependentesLookup&quot; > <param name= &quot;class&quot; value= &quot;br.com.neoimage.CombosDependentesLookup&quot; /> </create> <!-- Utilizado para conversao de objetos javascript/java --> <convert converter= &quot;bean&quot; match= &quot;br.com.neoimage.usuario.Usuario&quot; /> <convert converter= &quot;bean&quot; match= &quot;br.com.neoimage.localizacao.Estado&quot; /> <convert converter= &quot;bean&quot; match= &quot;br.com.neoimage.localizacao.Cidade&quot; /> </allow> </dwr>
  • 5.
    Crie a classeEstado package br.com.neoimage.localizacao; import java.util.ArrayList; import java.util.List; public class Estado { private Integer codigo; private String nome; public List<Estado> listar() { List<Estado> listaEstados = new ArrayList<Estado>(); Estado estado = new Estado(); estado.setCodigo(12); estado.setNome(&quot;São Paulo&quot;); listaEstados.add(estado); estado.setCodigo(24); estado.setNome(&quot;Rio de Janeiro&quot;); listaEstados.add(estado); return listaEstados; } // getters e setters... }
  • 6.
    Crie a classeCombosDependentesLookup package br.com.neoimage; import java.util.ArrayList; import java.util.List; import br.com.neoimage.localizacao.Cidade; import br.com.neoimage.localizacao.Estado; public class CombosDependentesLookup { public List<Cidade> obterCidades(Estado estado) { Cidade cidade = new Cidade(); List<Cidade> listaCidades = new ArrayList<Cidade>(); listaCidades = cidade.listar(estado); return listaCidades; } }
  • 7.
    Crie a classeCidade package br.com.neoimage.localizacao; import java.util.ArrayList; import java.util.List; public class Cidade { private Integer codigo; private String nome; public List<Cidade> listar(Estado estado) { List<Cidade> listaCidades = new ArrayList<Cidade>(); Cidade cidade = new Cidade(); if (estado.getCodigo().equals(24)) { cidade.setCodigo(1); cidade.setNome(&quot;ANGRA DOS REIS&quot;); listaCidades.add(cidade); cidade = new Cidade(); cidade.setCodigo(2); cidade.setNome(&quot;APERIBÉ&quot;); listaCidades.add(cidade); listaCidades.add(cidade); } else if (estado.getCodigo().equals(12)) { cidade.setCodigo(21); cidade.setNome(&quot;PRESIDENTE PRUDENTE&quot;); listaCidades.add(cidade); cidade = new Cidade(); cidade.setCodigo(22); cidade.setNome(&quot;ADAMANTINA&quot;); listaCidades.add(cidade); listaCidades.add(cidade); } return listaCidades; } // getters e setters... }
  • 8.
    Adicione a entradaabaixo no web.xml: <servlet> <servlet-name>ServletCombosDependentes</servlet-name> <servlet-class> br.com.neoimage.ServletCombosDependentes</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletCombosDependentes</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
  • 9.
    Crie a classe ServletCombosDependentes package br.com.neoimage; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.neoimage.localizacao.Estado; public class ServletCombosDependentes extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Estado estado = new Estado(); List<Estado> listaEstados = estado.listar(); request.setAttribute(&quot;listaEstados&quot;, listaEstados); RequestDispatcher rd = request.getRequestDispatcher(&quot;/combos-dependentes.jsp&quot;); rd.forward(request, response); } }
  • 10.
    Crie o jspcombos-dependentes.jsp <%@ taglib uri= &quot;http://java.sun.com/jsp/jstl/core&quot; prefix= &quot;c&quot; %> <html> <head> <script type= 'text/javascript' src= '/tutorial-dwr/dwr/interface/CombosDependentesLookup.js' ></script> <script type= 'text/javascript' src= '/tutorial-dwr/dwr/engine.js' ></script> <script type= 'text/javascript' src= '/tutorial-dwr/dwr/util.js' ></script> <script language= &quot;javascript&quot; > function carregarCidades() { var estado = new Object(); estado.codigo = document.getElementById(&quot;comboEstados&quot;). value ; CombosDependentesLookup . obterCidades (estado, function (data) { dwr.util. removeAllOptions (&quot;comboCidades&quot;); dwr.util. addOptions (&quot;comboCidades&quot;, {&quot;0&quot;:&quot;Selecione...&quot;}); dwr.util. addOptions (&quot;comboCidades&quot;, data, &quot;codigo&quot;, &quot;nome&quot;); }); } </script> </head> <body> <label>Estados</label> <select name= &quot;comboEstados&quot; id= &quot;comboEstados&quot; onchange= &quot;carregarCidades();&quot; > <option value= &quot;0&quot; >Selecione...</option> <c:forEach var= &quot;estado&quot; items=&quot;${listaEstados}&quot;> <optionvalue=&quot;<c:out value=&quot;${estado.codigo}&quot; />&quot;><c:out value=&quot;${estado.nome}&quot; /> </option> </c:forEach> </select> <label>Cidades</label> <select id= &quot;comboCidades&quot; > <option value= &quot;0&quot; >Selecione...</option> <c:forEach var= &quot;cidade&quot; items=&quot;${listaCidades}&quot;> <optionvalue=&quot;<c:out value=&quot;${cidade.codigo}&quot; />&quot;><c:out value=&quot;${cidade.nome}&quot; /> </option> </c:forEach> </select> </body> </html>
  • 11.
    Testando as combosdependentes Inicie o servidor e aponte para o endereço abaixo http://localhost:8080/tutorial-dwr/servlet/ServletCombosDependentes Os valores da combo de cidades irá mudar de acordo com o Estado selecionado.
  • 12.
    Dúvidas ou comentários?Envie um email para [email_address] Visite meu blog para mais dicas e tutorias http://alexandresoli.wordpress.com

Notas do Editor