[RESOLVIDO]Combo estado/cidade vraptor

primeiramente estou vendo logo se estava recebendo a lista de cidades do sql, e vi que nao estava, estou tentando logo encontrar o erro que está dando e volto a testar rafael.

Bem, vamos lá, corrigi a parte do hibernate onde ele me retorna corretamente a lista de cidades, até ae tudo bem, o que fiz agora foi colocar um breakpoint no metodo carregaCidades para ver pelo menos se está acessando o metodo, mais pelo que vi, se quer ele entra no metodo carregaCidades.

segue como está meu codigo.

@Get("/visitante/carregaCidades")
	public void carregaCidades(int estado) {  
	   List<Cidade> cidades = this.cidadeRep.findCitiesFromState(estado); // Carrega as cidades que estão nesse estado...  
	   result.use(Results.json()).withoutRoot().from(cidades).serialize(); // Transforma a lista em JSON  
	} 

Obs: usei o firebug e pelo que vi, ele está pegando o Id corretamente, inclusive cheguei a criar uma pagina carregaCidades.jsp para ver se está ocorrendo tudo certo, mais pelo que vi coloquei o breakpoint no metodo e ele nao entra la.

<script>
$(document).ready(function(){  
	   $('#estadosSelect').on('change', function(){  
	      var self = $(this);  
	      var selecionado = self.val(); // pega o ID do estado  
	      $.ajax({  
	    	 url:'/visitante/carregaCidades/',//+ selecionado,  
	         data:{estado:selecionado}, // Passa a variável ao server. O nome do parâmetro tem que ser estado, pois foi o nome colocado aqui.  
	         dataType:'json', // O Server vai retornar um JSON  
	         success:function(data){  
	            // Precisa transformar de json para objeto html  
	            var options = [];  
	            options.push(' <option>Selecione</option> '); // colocando a primeira option...  
	            for (var i = 0; i < data.length; i++) {  
	               options.push('<option value="'+data[i].codigo+'">'+data[i].nome+'</option>');  
	            }  
	              
	            // Agora precisa juntar esses options dentro da combo de cidades  
	            $('#cidadesSelect').html(options.join(''));  
	         },  
	         error:function(){  
	            alert('erro');  
	         }  
	      });  
	   });  
	}); 
</script>

não precisao ser @Post nao?

obs: está sempre aparecendo a mensagem de erro.

Não precisa ser POST. A sua action está anotada com @Get. Então, TEM que ser Get…

O problema é que a URL está errada. Na sua action não tem a ‘/’ no final e no ajax tem.

Outro problema, você deve considerar o contextPath para garantir essa chamada.

[quote=Rafael Guerreiro]Não precisa ser POST. A sua action está anotada com @Get. Então, TEM que ser Get…

O problema é que a URL está errada. Na sua action não tem a ‘/’ no final e no ajax tem.

Outro problema, você deve considerar o contextPath para garantir essa chamada.

[/quote]

mais essa barra ae foi pq fui testando de varias formas e que esqueci tbm, mais acabei de testar corrigindo e nada, e quanto ao contextPath, nao sei como corrigir isso, visto que eu estou no /visitante/formulario.

mais o que estou encabulado é que nao está nem entrando no metodo.

testei como você falou e testei tambem

url:'"<c:url value="/visitante/carregaCidades/" />'+ selecionado,  
	         //data:{estado:selecionado}, // Passa a variável ao server. O nome do parâmetro tem que ser estado, pois foi o nome colocado aqui.  
	         dataType:'json', // O Server vai retornar um JSON  
@Get("/visitante/carregaCidades/{estado}")
	public void carregaCidades(int estado) {  
	   List<Cidade> cidades = this.cidadeRep.findCitiesFromState(estado); // Carrega as cidades que estão nesse estado...  
	   result.use(Results.json()).withoutRoot().from(cidades).serialize(); // Transforma a lista em JSON  
	}

e nada, nem entra no metodo, só cai no erro.

Pode mostrar o erro que o browser mostra para você?

opa, consegui entrar no metodo

coloquei da seguinte forma:

url:'<c:url value="/visitante/carregaCidades/" />'+ selecionado,    
             //data:{estado:selecionado}, // Passa a variável ao server. O nome do parâmetro tem que ser estado, pois foi o nome colocado aqui.    
             dataType:'json', // O Server vai retornar um JSON   

tinha colocado uma " antes do <c:

aeeew, dessa forma consegui, vou avançar agora e ver como salvar o visitante no banco, resgatanto o id da cidade e do estado.

Marca lá como resolvido…

O mais importante é: você entendeu tudo ou tem alguma dúvida?

é GET mesmo, o problema é que tem uma / no final
muda para

url:'/visitante/carregaCidades',

na verdade a url precisava do contextPath lucas, eu não sabia que podia colocar ou pior, que precisava. Mais é a url que vc passou msm, eu já consegui como havia falado mais agradeço por ter vindo ajudar.

estou tentando a partir desses códigos que vc e o rafael mostram estudar um pouco de javascript, jquery e o principal, vRaptor, por ele me disponibilizar um json já prontinho.

Fico grato.

rafael, aproveitando o uso do topico que foi dada uma senhora aula de jquery, você me auxiliou informando o seguinte:

onde esse id vem de um combobox, estou tentando migrar essa estrutura para um checkbox, como posso capturar a ação de marcar e desmarcar o checkbox? estou procurando a api aqui mais nao tou encontrando algo relacionado,

estava procurando algo no tipo

$('#estadosSelect').on('check', function() - para marcar.

$('#estadosSelect').on('uncheck', function() - para desmarcar

mais ainda não encontrei nada do tipo, se poderem auxiliar, fico grato.

vc pode fazer isso:

$('#id-do-checkbox').on('click', function() {
    if ($(this).is(':checked')) {
       //...
    } else {
       //...
    }
});

Lucas, tenho uma dúvida um tanto quanto chata que é a seguinte, eu preciso fazer um forEach na visão onde eu preciso povoar a varios input Radio com as devidas Permissões

basicamente o seguinte:

[ ] Alterar
[ ] Visualizar
[ ] Nenhuma

porem esse determinado grupo possui a permissão Alterar, e queria que mostrasse da seguinte forma:

[X] Alterar
[ ] Visualizar
[ ] Nenhuma

ou seja, que ele mostrasse já marcado, é possível fazer isso? primeiramente pensei em utilizar um c:if, mais só sei usar o atributo eq do c:if, ele possui algo como um contains?

e outra, com a opção input Radio o radio só é desmarcado quando outro radio com mesmo name é desmarcado só que esse meu nao terá o name, ele efetuará um ajax dependendo da ação de clicar ou não no radio.

para o c:if vc pode usar o ${fn:contains(lista, ‘PERMISSAO’)}

para os radios, vc precisa colocar um name, mesmo que não for usar pra nada.

vou começar a criar a tela aqui e posto a duvida aqui novamente, mais minha duvida por enquanto será mesmo na questão do ${fn:contains(lista, ‘PERMISSAO’)} .

quando eu montar a estrutura ficará melhor para você me auxiliar, quando eu montar a tela mostro aqui.

No caso, se a condição for verdadeira, como fazer com que o radio aparecer já marcado?

só adicionar o atributo checked no input.

lucas é possível isso:

${usuario.ativo ? ‘’ : ‘inativo’}

com c:if test…

?