Combo Dinâmico

3 respostas
T

Olá
Estou iniciando no desenvolvimento JAVA, estou fazendo um web sistema com JSP, Eclipse e TomCat.
Gostaria de saber que tecnologia ou componentes eu poderia utilizar para fazer uma página dinâmica, no caso, preciso fazer um Combo dinâmico, onde, por exemplo, eu seleciono o estado e é carregado as cidades relacionadas à este estado.
Que tecnologia é recomendada para este fim?

3 Respostas

rmendes08

Você pode usar Javascript para isso. Com Javascript você pode tratar eventos ocorridos em controles HTML. Assim, quando o usuário selecionar uma opção de estado você gera uma requisição para o server com o Javascript. A vantagem é que você não precisa recarregar a página para executar a requisição.

R_chieck

isso mesmo, creio que terás que pesquisar mais sobre html e javascript doque sobre o próprio java.

T
Estive pesquisando sobre JavaScript com o JSP, então encontrei um exemplo que monta o Combo dinamicamente, no onChange do componente select:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script type="text/javascript">
    var url = "";
	var xmlhttp = "";
	
	function obterObjRequisicao(UF){
		 
		url = "<%= request.getContextPath()%>/" + "MontaCombo?UF=" + UF;
		if(window.XMLHttpRequest){
			xmlhttp = new XMLHttpRequest();
		}
		else{
			try{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(E){
					xmlhttp= false;
				}
			}
		}
		if(!xmlhttp && window.createRequest){
			try{
				xmlhttp = window.createRequest();
			}catch(e){
				xmlhttp = false;
			}
		}
		try{
			xmlhttp.open("POST", url, true);
			xmlhttp.onreadystatechange = function(){
				if(xmlhttp.readyState == 4){
					if(xmlhttp.status == 200){
						processar();
					}
				}
			};
			try{
				xmlhttp.send(null);
			}catch(e){
				xmlhttp = "";
			}
		}catch(e){
			try{
				xmlhttp.send(null);
				xmlhttp = "";
			}catch(e){
				xmlhttp = "";
			}
		}
	}
	
	function processar(){
		var result = xmlhttp.responseText;
		var quebra = result.split("\n");
		var tamanha = quebra.length - 1;
		var select = document.getElementById("cidades");
		select.innerHTML = "";
		for(i = 0; i < tamanha; i++){
			var quebre = quebra[i].split("|");
			var oSelect = document.getElementsByName('cidades')[0].options.length;
			nextOptIndex = quebre[0];
			newOpt = document.createElement('option');
			newOpt.text = quebre[1];
			newOpt.value = nextOptIndex;
			document.getElementsByName('cidades')[0].options.add(newOpt, oSelect);			
		}		
		
		
	}	
</script>
Porém, este código está no head da página que tenho o combo e os outros componentes, queria colocar essas funções em outro arquivo, para ficar centralizadas e nao misturado com o arquivo .jsp, criei um arquivo .JS, mas, ele não funciona, devido à chamada que ele faz para a classe java:
url = "<%= request.getContextPath()%>/" + "MontaCombo?UF=" + UF;
Dessa forma ele nao roda dentro do .JS.

De que forma eu poderia fazer que fosse executada essa função que retorna a lista de cidades conforme a escolha no outro combo selecionado, deixando as functions do JavaScript em outro arquivo que não seja o .JSP ??

Criado 25 de julho de 2011
Ultima resposta 31 de jul. de 2011
Respostas 3
Participantes 3