Pessoal estou testando montar 3 combobox :
Pais-> Estado --> Municipio
Mas não monta municipio :
Segue codigo:
[code]<%@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"/>">
</select>
</td>
</tr>
<tr>
<td>
<label>Municipio:</label>
</td>
<td>
<select id="municipioDropdown">
<img /img/loading.gif"/>">
</select>
</td>
</tr>
</table>
</form>
</body>
</html>[/code]
[code]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);
});
}
}
[/code]
[code]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);
});
}
}
[/code]
[code]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<Pais> 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<Estado> 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<Municipio> municipios = daoM.listaM(uf);
result.use(Results.json())
.withoutRoot()
.from(municipios)
.exclude("id")
.serialize();
}
@Get @Path("/index/listatudoP")
public void listatudoP(String nome){
List<Pais> pais = daoP.listaP(nome);
}
@Get @Path("/index/listatudoE")
public void listatudo(String pais){
List<Estado> estados = daoE.listaE(pais);
}
@Get @Path("/index/listatudoM")
public void listatudoM(String uf){
List<Municipio> municipios = daoM.listaM(uf);
}
}
[/code]
[code]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<Estado> listaE(String pais){
return session.createCriteria(Estado.class)
.add(Restrictions.ilike("pais", pais, MatchMode.ANYWHERE))
.list();
}
@SuppressWarnings("unchecked")
public List<Estado> listaTudoE(){
return this.session.createCriteria(Estado.class).list();
}
}
[/code]
[code]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<Municipio> listaM(String uf){
return session.createCriteria(Municipio.class)
.add(Restrictions.ilike("uf", uf, MatchMode.ANYWHERE))
.list();
}
@SuppressWarnings("unchecked")
public List<Municipio> listaTudoM(){
return this.session.createCriteria(Municipio.class).list();
}
}
[/code]
[code]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<Pais> listaP(String nome){
return session.createCriteria(Pais.class)
.add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE))
.list();
}
@SuppressWarnings("unchecked")
public List<Pais> listaTudoP(){
return this.session.createCriteria(Pais.class).list();
}
}
[/code]
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:
https://lh3.googleusercontent.com/–g1y_IuOq8Y/TgjODgE0CFI/AAAAAAAAEr0/Z-W8WW5Ke34/s1152/bug.png