estou com problemas em passar o valor de um combobox para o vraptor, eu tenho uma lista de estados, seleciono um estado e via json ele carrega as divisões pra mim, mas agora eu quero passar o valor selecionado na divisão para o método carrega do meu controller, mas quando eu executo aparece o link
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Insert title here</title><scripttype="text/javascript">$(functiongetdivisao(){$('#estado').change(function(){varvalue=$('#estado').val();$.ajax({url:'<c:url value="/cidade/carregadivisao/"/>'+value,dataType:'json',success:function(json){vardivisoes=json.list;$('#divisao option').remove();for(variindivisoes){varoption=$('<option value="'+divisoes[i].id+'">'+divisoes[i].nome+'</option>');option.appendTo('#divisao');}}});});});</script></head><body><fieldset><legend>Listagem de Cidades</legend></fieldset><label>Estado</label><selectid="estado"name="sestado"onChange="getdivisao()"><c:forEachvar="estado"items="${estadoList}"><optionvalue="${estado.id}">${estado.nome}</option></c:forEach></select><formaction="<c:url value="/cidade/listapordivisao/${divisao}"/>" method="get">
<label>Divisão</label><selectid="divisao"name="divisao.id"></select><buttontype="submit">Listar</button></form></body></html>
O Lucas sabe mais de VRaptor que minha vizinha de Pica ! hehhe
C
cvinicios
Lucas obrigado pela ajuda, eu entendi o seu código, mas não consegui entender como utiliza-lo
eu tenho que remover meu Listar?
Lucas_Cavalcanti
sim… pode remover o botão… vc vai fazer a requisição via javascript…
a requisição vai ser feita assim que a pessoa escolher uma divisão… talvez seja bom vc incluir uma option em branco no select…
juniorsatanas
Lucas tu é da CAelum ?
Lucas_Cavalcanti
Sim… sou da Caelum, e sou desenvolvedor do VRaptor
C
cvinicios
não ta funcionando, q q eu to fazendo de errado?
<%@pagelanguage="java"contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html; charset=ISO-8859-1"><title>Insert title here</title><scripttype="text/javascript">$(functiongetdivisao(){$('#estado').change(function(){varvalue=$('#estado').val();$.ajax({url:'<c:url value="/cidade/carregadivisao/"/>'+value,dataType:'json',success:function(json){vardivisoes=json.list;$('#divisao option').remove();for(variindivisoes){varoption=$('<option value="'+divisoes[i].id+'">'+divisoes[i].nome+'</option>');option.appendTo('#divisao');}}});});});</script><scripttype="text/javascript">$('#divisao').change(function(){varform=$(this).parents('form');//pega o form de foravarurl=form.attr('action');// pega a action do formvarselected=$(this).children(':selected').val();//pega a option selecionada (eu acho)form.attr('action',url+selected);//muda a action do formform.submit();//submete o form});</script></head><body><fieldset><legend>Listagem de Cidades</legend></fieldset><label>Estado</label><selectid="estado"name="sestado"onChange="getdivisao()"><c:forEachvar="estado"items="${estadoList}"><optionvalue="${estado.id}">${estado.nome}</option></c:forEach></select><formaction="<c:url value="/cidade/listapordivisao/"/>" method="get">
<label>Divisão</label><selectid="divisao"name="divisao.id"></select></form></body></html>
juniorsatanas
Lucas Quem e responsável por por as frases nas apostilas ?
Lucas_Cavalcanti
@cvinicios
esse código é um binding de eventos no jquery… vc precisa executar isso depois de carregar toda a tela…
pra fazer isso é só colocar o código dentro de um :
$(function() {
//codigo aqui
});
ou seja, no seu caso é só deixar dentro da function getdivisao (que não precisa ter nome… pode deixar só function() pq não vai ser vc que vai chamá-la)
@juniorsatanas
Muitas pessoas, depende da apostila, porque?
juniorsatanas
JSF / VRaptor — sempre tem uma referencia a Nietzsche, queria saber que tem tão bom gosto e ainda sabe java !
Lucas_Cavalcanti
várias pessoas da caelum lêem bastante mas enfim… não vamos desviar o assunto do tópico por favor
C
cvinicios
Lucas essa option em branco que vc falou é a primeira[0]?
eu percebi que o primeiro item não dá para ser selecionado na primeira tentativa, é isso?
Retomando o assunto do topico em questão.
Estou começando agora com vraptor.
Fiz umas pesquisas no google e aqui mesmo no guj sobre melhor forma de se usar um combo box com vraptor e me deparei com <c:foreach> para iterar os itens!!!
Não existe alguma solução do tipo que usamos no jsf com rich faces? um SelectOneMenu da vida?
obrigado
juniorsatanas
hahahha essa foi boa, ou melhor foi otima !
EU SEMPRE QUIS PERGUNTAR ISSO !
Lucas_Cavalcanti
bom… os componentes visuais do JSF não funcionam normalmente com os frameworks baseados em servlet (como o VRaptor)…
Agora so para fechar qual seria a melhor solução ou o que vcs usam em uma aplicação desenvolvida por vcs usando o vraptor?
vcs usam o waffle mesmo ou fazem de outra forma?
flw
eu prefiro usar HTML + JSP puro pra fazer isso mesmo, fica bem mais fácil controlar o que aparece,
e aplicar qualquer layout
@juniorsatanas
pra fazer isso no vraptor, vc pode carregar o segundo combobox(select) usando ajax mesmo…
vários plugins do jQuery fazem isso
juniorsatanas
Vixi, ai da maior prolema com os navegadores ! pega em 1 e não pega em 10 !
carregooJQuery:<scripttype="text/javascript"src="../../script/jquery-1.2.6.js"></script>Afuncaoquechamaascidades:functioncarregaCidades(estado){$("#cidade").load("ajaxCarregaCidade?estado="+estado);$("#cidade").ajaxError(function(request,settings){$("#cidade").html("Falha ao recuperar as Cidades.");});}
Obrigado !
Lucas_Cavalcanti
na verdade, se vc fez direito, não deveria dar problema entre os navegadores, pq o jquery já cuida de deixar as coisas compatíveis
pissurno
vlw lucas pelas dicas agora é so implementar hehehehe