Buscar dados no Banco antes do Submit

6 respostas
wagne23

Tenho um cadastro de visitas e também um cadastro de visitantes, quando vou cadastrar a visita quero informar apenas o cpf do visitante e assim que eu tirar o foco do input do cpf ele pesquisar no banco de dados os demais dados do visitante ou se não estiver cadastrado ele me informar que o cpf não está cadastrado. Estou usando jsp e servlets apenas, como posso ter esse tipo de comportamento?

6 Respostas

Takeshi91

Não sei se dá para fazer isto, mas até aonde eu sei, JSP não é compatível com Ajax. Então isto que você quer é impossível.

Tente usar JSF 2.0

ronnytds

olha só, dá pra fazer o que vc quer sim, com AJAX. Procura uma biblioteca AJAX chamada JSON. ela eh bem simples de usar com javascript e com ela vc vai conseguir fazer o que vc quer.

wagne23

Obrigado ronnytds, você tem algum exemplo ou link sobre JSON?

ronnytds

tem o site oficial:
http://www.json.org/json-pt.html
quanto ao exemplo vou catar aqui nos projetos
e daqui a pouco posto por aqui.

wagne23

Consegui uma solução para o meu problema, não sei se é a mais viável. Ficou assim:

Utilizei esse script

<script type="text/javascript">            
            function initXHR(){
                if(window.XMLHttpRequest){
                    xhr = new XMLHttpRequest();
                }else if (window.ActiveXObject){
                    xhr = new ActiveXObject("Microsoft.XMLHttp");
                }
            }            
            function sendRequest(url, handler){
                initXHR();             
                xhr.onreadystatechange = handler;                
                xhr.open("GET", url, true);
                xhr.send(null);
            }
            function pesquisaVisitante(){
                var cpfVisitante = window.document.getElementById("cpf");
                var url = "VisitanteControle?acao=pesquisar&cpf="+cpfVisitante.value;
                sendRequest(url, ajaxBuscaVisitante);
            }
            function ajaxBuscaVisitante(){
                if(xhr.readyState == 4) {
                    if(xhr.status == 200){
                        var valor = window.document.getElementById("nome");
                        var retorno = xhr.responseText;
                        valor.innerHTML = retorno;
                    }
                }
            }
        </script>

e no input chamo assim:

Cpf Visitante: <input id="cpf" type="text" name="cpf" onblur="pesquisaVisitante();"/>

Desse modo eu mando para a servlet o cpf que por sua vez verifica se está ou não cadastrado assim:

if(acao.equals("pesquisar")) { String cpf2 = request.getParameter("cpf"); Visitantes vis = dao.pesquisaVisitantesPorcpf(cpf2); if(vis.getNome() != null){ out.println(vis.getNome()); }else{ out.println("Visitante não encontrado. Clique <a href=VisitanteControle?acao=novo>aqui</a> para cadastrar."); } }

Ai ou ele me retorna o nome ou a mensagem de que não foi encontrado o cadastro do visitante.

Achei a solução nesse site http://adsuna.wordpress.com/2010/10/27/java-ajax-sql-select-e-insert-no-banco/

ronnytds

eh isso mesmo cara, eh desse jeito mesmo que eh pra fazer.

Criado 5 de abril de 2011
Ultima resposta 5 de abr. de 2011
Respostas 6
Participantes 3