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?
Buscar dados no Banco antes do Submit
6 Respostas
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
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.
Obrigado ronnytds, você tem algum exemplo ou link sobre JSON?
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.
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/
eh isso mesmo cara, eh desse jeito mesmo que eh pra fazer.