Pais Estado Cidade Ajax?

0 respostas
juniorsatanas

Pessoal estou testando montar 3 combobox :

Pais-> Estado --> Municipio

Mas não monta municipio :

Segue codigo:

<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html> <title>JLRaptorAjax</title>
    <head>
        <script type="text/javascript" charset="utf-8"	src="<c:url value="/js/jquery-1.4.2.min.js"/>"></script>
        <script type="text/javascript" charset="utf-8"	src="<c:url value="/js/jquery.jqia.selects.js"/>"></script>
        <script type="text/javascript" charset="utf-8"	src="<c:url value="/js/main.js"/>"></script>
        <script type="text/javascript" charset="utf-8"	src="<c:url value="/js/main_1.js"/>"></script>
       
        <script type="text/javascript">  //ajusata estado
            $(function(){
                $('#loading').hide();
                $('#paisDropdown').change(function(){
                    adjustEstadoDropdown();
                }).change();
                $('#loading').ajaxStart(function() {
                    $(this).show();
                });
                $('#loading').ajaxStop(function(){
                    $(this).hide();
                });

            });
        </script>
        
        <script type="text/javascript">//ajusta municipio
            $(function(){
                $('#loading').hide();
                $('#estadoDropdown').change(function(){
                    adjustMunicipioDropdown();
                }).change();
                $('#loading').ajaxStart(function() {
                    $(this).show();
                });
                $('#loading').ajaxStop(function(){
                    $(this).hide();
                });
	
            });
        </script>
        
    </head>
    <body>
        <form action="" >
            <h1>Formulário de Cadastro</h1>
            <table>
                <tr>
                    <td>
                        <label>País:</label>
                    </td>
                    <td>
                        <select id="paisDropdown">
                            <option>Selecione o Pais</option>
                            <c:forEach var="pais" items="${paiss}">
                                <option value="${pais.sigla}">${pais.nome} - ${pais.sigla}</option>
                            </c:forEach>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>
                        <label>Estado:</label>
                    </td>
                    <td>
                        
                        <select id="estadoDropdown">
                            <img   /img/loading.gif"/>&quot;&gt;
                        &lt;/select&gt;
                          
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;
                        &lt;label&gt;Municipio:&lt;/label&gt;
                    &lt;/td&gt;
                    &lt;td&gt;
                        
                        &lt;select id="municipioDropdown"&gt;
                            <img   /img/loading.gif"/>&quot;&gt;
                        &lt;/select&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
              &lt;/table&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;
function adjustMunicipioDropdown() {
	var estadoValue = $('#estadoDropdown').val(); 
	var dropdownSet = $('#municipioDropdown');
	if (estadoValue.length == 0) 
	{
		dropdownSet.attr("disabled", true);
		dropdownSet.emptySelect();
	} 
		else 
	{
		dropdownSet.attr("disabled", false);

		$.getJSON('/VRaptorAjax/index/buscaMunicipios.json', {
			uf : estadoValue
		}, function(data) {
			dropdownSet.loadSelect(data);
		});
	}
}
function adjustEstadoDropdown() {
	var paisValue   = $('#paisDropdown').val();
	var dropdownSet = $('#estadoDropdown');
	if (paisValue.length == 0)
	{
		dropdownSet.attr("disabled", true);
		dropdownSet.emptySelect();
	} 
		else 
	{
		dropdownSet.attr("disabled", false);

		$.getJSON('/VRaptorAjax/index/buscaEstados.json', {
			pais : paisValue
		}, function(data) {
			dropdownSet.loadSelect(data);
		});
	}
}
package com.tnogueira.ajax;
import java.util.List;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.view.Results;
import com.tnogueira.dao.EstadoDao;
import com.tnogueira.dao.MunicipioDao;
import com.tnogueira.dao.PaisDao;
import com.tnogueira.model.Estado;
import com.tnogueira.model.Municipio;
import com.tnogueira.model.Pais;

@Resource
public class IndexController {

        private Result result;
	private Result resultM;
	private EstadoDao daoE;
	private MunicipioDao daoM;
        private PaisDao daoP;

	public IndexController(
        Result result,
        Result resultM,
        EstadoDao daoE,
        MunicipioDao daoM,PaisDao daoP)
        {
	this.result = result;
	this.resultM = resultM;
	this.daoE = daoE;
	this.daoP = daoP;
        this.daoM = daoM;
        
	}
	@Path("/")
	public void index(){
        this.resultM.include("paiss", daoP.listaTudoP());
        this.result.include("estados", daoE.listaTudoE()); //add
        this.resultM.include("municipios", daoM.listaTudoM()); //add
	}
        @Get @Path("/index/buscaPais.json")
	public void loadPais(String nome){
		List&lt;Pais&gt; pais = daoP.listaP(nome);
		       result.use(Results.json())
                             .withoutRoot()
                             .from(pais)
			     .exclude("id")
			     .serialize();
	}
	@Get @Path("/index/buscaEstados.json")
	public void loadEstados(String pais){
		List&lt;Estado&gt; estados = daoE.listaE(pais);
                   result.use(Results.json())
                             .withoutRoot()
                             .from(estados)
			     .exclude("id")
			     .serialize();
	}
	@Get @Path("/index/buscaMunicipios.json")
	public void loadMunicipios(String uf){
		List&lt;Municipio&gt; municipios = daoM.listaM(uf);
		       result.use(Results.json())
                             .withoutRoot()
                             .from(municipios)
			     .exclude("id")
			     .serialize();
	}
        @Get @Path("/index/listatudoP")
	public void listatudoP(String nome){
		List&lt;Pais&gt; pais = daoP.listaP(nome);
	}
        @Get @Path("/index/listatudoE")
	public void listatudo(String pais){
		List&lt;Estado&gt; estados = daoE.listaE(pais);
	}
	@Get @Path("/index/listatudoM")
	public void listatudoM(String uf){
		List&lt;Municipio&gt; municipios = daoM.listaM(uf);
	}
        
}
package com.tnogueira.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import com.tnogueira.model.Estado;

@Component
public class EstadoDao {

	private final Session session;

	public EstadoDao(Session session){
		this.session = session;
	}
	@SuppressWarnings("unchecked")
	public List&lt;Estado&gt; listaE(String pais){
        	return session.createCriteria(Estado.class)
				.add(Restrictions.ilike("pais", pais, MatchMode.ANYWHERE))
				.list();
	}
	@SuppressWarnings("unchecked")
	public List&lt;Estado&gt; listaTudoE(){
		return this.session.createCriteria(Estado.class).list();
	}
    }
package com.tnogueira.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import com.tnogueira.model.Municipio;

@Component
public class MunicipioDao {
	
	private final Session session;
	
	public MunicipioDao(Session session){
		this.session = session;
	}
	@SuppressWarnings("unchecked")
	public List&lt;Municipio&gt; listaM(String uf){
		return session.createCriteria(Municipio.class)
				.add(Restrictions.ilike("uf", uf, MatchMode.ANYWHERE))
				.list();
	}
	@SuppressWarnings("unchecked")
	public List&lt;Municipio&gt; listaTudoM(){
		return this.session.createCriteria(Municipio.class).list();
	}
        
    }
package com.tnogueira.dao;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.vraptor.ioc.Component;
import com.tnogueira.model.Pais;

@Component
public class PaisDao {

	private final Session session;

	public PaisDao(Session session){
		this.session = session;
	}
	@SuppressWarnings("unchecked")
	public List&lt;Pais&gt; listaP(String nome){
		return session.createCriteria(Pais.class)
				.add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE))
				.list();
	}
        @SuppressWarnings("unchecked")
	public List&lt;Pais&gt; listaTudoP(){
		return this.session.createCriteria(Pais.class).list();
	}

    }
********************************************************************* Acho que o Problema e com esse JS. *********************************************************************
(function($) {
  $.fn.emptySelect = function() {
    return this.each(function(){
      if (this.tagName=='SELECT') this.options.length = 0;
    });
  }

  $.fn.loadSelect = function(data) {
    return this.emptySelect().each(function(){
      if (this.tagName=='SELECT') {
        var selectElement = this;
        $.each(data,function(index,optionData){
        	var option = new Option(optionData.nome,optionData.nome);
          if ($.browser.msie) {
            selectElement.add(option);
          }
          else {
            selectElement.add(option,null);
          }
        });
      }
    });
  }
})(jQuery);

NÃO MONTA OS MUNICIPIO:
[img]https://lh3.googleusercontent.com/--g1y_IuOq8Y/TgjODgE0CFI/AAAAAAAAEr0/Z-W8WW5Ke34/s1152/bug.png[/img]
[url]https://lh3.googleusercontent.com/--g1y_IuOq8Y/TgjODgE0CFI/AAAAAAAAEr0/Z-W8WW5Ke34/s1152/bug.png[/url]

Criado 27 de junho de 2011
Respostas 0
Participantes 1