Combo dinâmica não aparece

Pessoal, criei uma combo dinâmica utilizando JSon + Prototype.
Ela carrega, os Estados, os municipios, mas quando vai carregar a terceira combo as pequenas vai numa boa, as grandes como SP que tem 730 dados na lista ela não carrega, alguem tem alguma solução para isso.
Debugando eu vi que a lista chega bonitinha mas ele não consegue desenhar, provavelmente por causa de seu tamanho…

Amigo se fosse o meu caso eu faria uma combo extra pra filtrar as cidades pela letra inical, até pq uma combo com 730 itens detonaria a usabilidade do sistema… abraço…

É uma solução :smiley:
Realmente falaram isso aqui e tal o problema é que o cliente não quer, mas pelo visto não vai ter jeito. :smiley:

Afe o cliente não quer com o filtro, não existe mesmo um meio de carregar uma combo assim com uma scroll bar do lado nao? :?:

Verifica qual a resposta do servidor em json, ou invoca diretamente a url ou verifica o console do firebug.

Talvez seja um timeout do Prototype.

Não faz o menor sentido, mas checa se a resposta do servidor está chegando como eu falei anteriormente.

[quote=aleqi200]Verifica qual a resposta do servidor em json, ou invoca diretamente a url ou verifica o console do firebug.

Talvez seja um timeout do Prototype.

Não faz o menor sentido, mas checa se a resposta do servidor está chegando como eu falei anteriormente.[/quote]

Olhei a saida da lista no firebug ela ta lá.

Entao Bregaida, tenta aquela lance do prototype de onLoading chama uma div com uma imagem carregando e onSuccess esconda a div e carrega a lista do jeito que ja esta:

http://www.prototypejs.org/learn/introduction-to-ajax

E la na funcao onde vc monta um innerHtml veja se consegue usar o new Ajax.Updater:
http://www.prototypejs.org/api/ajax/updater

[quote=Pedrosa]Entao Bregaida, tenta aquela lance do prototype de onLoading chama uma div com uma imagem carregando e onSuccess esconda a div e carrega a lista do jeito que ja esta:

http://www.prototypejs.org/learn/introduction-to-ajax

E la na funcao onde vc monta um innerHtml veja se consegue usar o new Ajax.Updater:
http://www.prototypejs.org/api/ajax/updater[/quote]

É mas no caso aki eu vou fazer ao invés de carregar a última lista, carrega um auto complete e resolve. melhor do q fazer aparecer 730 caras numa lista monstro…

Posta a sua função que cria o combo das cidades.

[quote=aleqi200]Posta a sua função que cria o combo das cidades.

[/quote]

JSP

[code]
<logic:match name=“dadosEmissaoForm” property=“mostrarComboVaraDestino” value=“true”>












Vara Destino

Estado:
<logic:match name=“dadosEmissaoForm” property=“habilitarEdicao” value=“true”>
					<bean:define name="dadosEmissaoForm" property="listaEstado" id="liEstado" />
					<html:select name="dadosEmissaoForm" property="codEstado" onchange="getMunicipios();">
						<html:option value="">Selecione um Estado</html:option> 
						<html:options collection="liEstado" property="codigoEstado" labelProperty="nomeEstado" />
					</html:select> 
				</logic:match> 
				<logic:notMatch name="dadosEmissaoForm" property="habilitarEdicao" value="true">
					<bean:write name="dadosEmissaoForm" property="txtDescricaoEstado" />
					<html:hidden name="dadosEmissaoForm" property="codEstado" />
				</logic:notMatch>
			
			</TD>
			<TD align="right" class="textotab2" width="99" height="45">Município:</TD>
			<TD align="left" class="textotab" width="186" height="45" valign="middle">&nbsp;
				<logic:match name="dadosEmissaoForm" property="habilitarEdicao" value="true">
					<DIV id="comboMunicipio">
					</DIV>
					</logic:match>
				<logic:notMatch name="dadosEmissaoForm" property="habilitarEdicao" value="true">
					<bean:write name="dadosEmissaoForm" property="txtDescricaoMunicipio" />
					<html:hidden name="dadosEmissaoForm" property="codMunicipio" />
				</logic:notMatch>
			</TD>
		</tr>
		<tr align="center" valign="middle"> 
	      	<td height="20" align="left" class="textotab2">&nbsp;</td>
			<TD height="20" align="left" class="textotab2">Vara de Destino:</TD>
			<TD height="20" align="left" class="textotab">
				<logic:match name="dadosEmissaoForm" property="habilitarEdicao" value="true">
					<DIV id="comboVara">
					</DIV>
				</logic:match>
				<logic:notMatch name="dadosEmissaoForm" property="habilitarEdicao" value="true">
					<bean:write name="dadosEmissaoForm" property="txtDescricaoVaraDestino" />
					<html:hidden name="dadosEmissaoForm" property="codVaraDestino" />
				</logic:notMatch>
			</TD>
			<TD colspan="2" height="20" align="left" class="textotab">&nbsp;</TD>
		</tr> 
	</table>
</logic:match>[/code]

JS

function getVaras() { 
        var url = 'ComboAninhadoServlet';
        var pars = 'codMunicipio=' +$F("descricaoMunicipio")+'&action=listaVaraDestino';
        var myAjax = new Ajax.Request(
                url,
                {
                        method: 'post',
                        parameters: pars,
                        onComplete: showVaras
                }
        );
	}     

	function showVaras(data) {
    	var jsonObject = data.responseText.evalJSON();
        var varas = jsonObject.varas;
        var html = "<select name='descricaoVara' id='descricaoVara'>";
        html+="<option value=''>--Selecione--</option>";
alert (varas);
        for(i=0;i<varas.length;i++) {
            html += " <option value='"+varas[i].id+"'>"+ varas[i].nomeVara + "</option>";
        }
        html += "</select>";
        var div = document.getElementById("comboVara");
        div.innerHTML = html;
    }

Servlet

[code]
private final void listaVaraDestino(HttpServletRequest request, PrintWriter out) {
BusinessInterfaceFactory businessFactory = BusinessInterfaceFactory.getInstance();
ComumBusinessInterface comumBusinessInterface = businessFactory.getComumBusinessInterface();
String codigo = request.getParameter(“codMunicipio”);
JSONObject json = new JSONObject();
List listaVaras = null;
try {
listaVaras = comumBusinessInterface.listarVara(Integer.parseInt(codigo));
System.out.println("Número de varas encontradas: " + listaVaras.size());
}
catch (BusinessException e1) {
LogManager.$app.debug("erro: "+e1);
}
List listaVaraJSon = new ArrayList();
for (int i = 0; i < listaVaras.size(); i++) {
Vara vara = (Vara) listaVaras.get(i);
JSONObject objetoJSon = new JSONObject();
try {
objetoJSon.put(“id”, vara.getCodVara());
objetoJSon.put(“nomeVara”, vara.getNomeVara());
} catch (Exception e) {
LogManager.$app.debug("erro: "+e);
}
listaVaraJSon.add(objetoJSon);
}

    try {
        json.put("varas", listaVaraJSon);
        System.out.println(listaVaraJSon);
    } 
    catch (Exception e) {
    	LogManager.$app.debug("Finalizando metodo [data-access-object-impl-class=br.gov.sp.prodesp.vec.web.ajax.ComboAninhadoServlet," + "method-name=listaVaraDestino()]" + "erro: "+e);
    }
    System.out.println(json.toString());
	out.print(json.toString());
} [/code]

Adicione um out.flush() em sua Servlet.