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…
?