Olá pessoal, estou com um probleminha aqui, que esta dificil para mim conseguir resolver, o problema é que tenho 2 comboBox, o primeiro é o de Estados e o segundo de cidades, inicialmente somente o combo de estados vem preenchido, o combo de cidades será preenchido assim que for selecionado um estado, eu tenho um método que retorna um List com as cidades filtradas já, o problema é, como eu acesso esse método via javascript, pq eu precisarei percorrer esse List e ir adicionando no comboBox, ja andei dando uma pesquisada e encontrei o DWR, mais não esta funcionando já fucei aqui, tentei descobrir o pq, mais sem súcesso, vou postar aqui o que eu já fiz.
Uma das minhas dúvidas é como eu passo parametro para para o metodo java dentro do javascript usando o DWR, bom abaixo vou colocar como eu estou fazendo.
O javaScript
function carregaCidades(){
Metodos.getListCidades(montaCombo);
}
function montaCombo(listBeans){
DWRUtil.removeAllOptions("cbCidades");
DWRUtil.addOptions("cbCidades", listBeans, cidCodigo, cidDescricao);
}
O metodo que retorna o List
public static List<Estados> getListEstados(){
Session sessao = HibernateUtil.getSessionFactory().openSession();
sessao.beginTransaction();
String hql = "from Estados order by estUf";
return (List<Estados>) ManipularHQL.executeHQLQuery(hql, sessao);
}
public static List<Cidades> getListCidades(){
Session sessao = HibernateUtil.getSessionFactory().openSession();
sessao.beginTransaction();
String hql = "from Cidades order by cidDescricao";
return (List<Cidades>) ManipularHQL.executeHQLQuery(hql, sessao);
}
Meu JSP
<div id="txtEstado">
<select name="cbEstado" onchange="carregaCidades()">
<%
list = Metodos.getListEstados();
Estados est;
for (Object obj : list){
est = (Estados)obj;
out.println("<option value=" + est.getEstUf() + ">" + est.getEstDescricao() + "</option>");
}
%>
</select>
</div>
<div id="txtCidade">
<select id="cbCidades" name="cbCidades" >
</select>
</div>
Você sabe dizer qual erro que está acontecendo? Já deu uma olhada no console de javascript?
Lembrando que o DWR vai converter a sua classe Java em um arquivo Javascript, então pode ser que o uso das classes do Hibernate na sua classe do DWR pode estar dando algum problema, talvez esteja faltando algum converter.
Eu sugiro a você, fazer alguns testes mais simples.
Tipo, cria primeiro um método na classe DWR que retorna só uma String e vê se funciona.
Assim fica mais fácil de encontrar o problema.
Desculpa minha ignorancia, mais como eu acesso esse console do javascript? vai me quebrar um galhão isso, mas se for o console exibido por padrao pelo netbeans, acho que não esta dando nenhúm erro, vou dar uma analisada melhor aqui.
O console javascript fica no browser.
Se você estiver usando Firefox ou Chrome, é só usar o atalho Ctrl + Shift + J ou procurar por Console de erros/Console Javascript pelo menu.
Nossa cara valeu mesmo, esse console de erro vai me ajuda, até então eu estava no escuro, não sabia qdo dava problema no JS, olhei no console e deu esse erro abaixo, parece que ele não esta encontrando minha classe transformada em JS, mas ela está declara e quando eu entro em http://localhost:8084/SiteClass/dwr aparece essa minha classe.
Erro: You must include DWR engine before including this file
Arquivo-fonte: http://localhost:8084/SiteClass/dwr/interface/Metodos.js
sim declarei, não sei pq não estava enxergando, como eu disse se eu acessar http://localhost:8084/SiteClass/dwr/interface/Metodos.js eu consigo ver o conteudo do JS, bom, como eu conseguir ver o conteudo, peguei esse conteudo e criei um arquivo de JS e coloquei na raiz do projeto, dessa forma eliminou o problema que citei acima, mas, agora quando eu tento usar um método do dentro do arquivo Metodos.js, dá uma mensagem de erro dizendo que não foi possivel localizar o comando.
Mensagem de erro
Erro: Metodos is not defined
Arquivo-fonte: http://localhost:8084/SiteClass/cadCliente.jsp
Linha: 277
Local do erro:
function carregaCidades(){
Metodos.getListCidades(montaCombo);//o erro ocorre aqui
}
function montaCombo(listBeans){
DWRUtil.removeAllOptions("comboCidades");
DWRUtil.addOptions("comboCidades", listBeans, cidCodigo, cidDescricao);
}
Como dizem por ai “A ordem dos Tratores, altera o viaduto” kkkkkkkkkk
Depois disso os metodos começaram a ser reconhecidos, ainda não funcionou kkkkkkkkkk, fiz um teste com uma função que só retorna uma mensagem e blz, funcionou, mais o meu objetivo mesmo é popular um combobox acessando o BD, foi que deu o problema, resultou em uma mensagem de erro estranha