Bom, eu estou fazendo um projeto da faculdade com servlet gravando dados em um bd.
Eu consigo gravar apenas quando uso o submit, porém eu havia feito alguma validações em javascript e se utilizo o submit no lugar de button, as validações não acontecem.
Já tentei utilizar a função document.forms[“meuform”].submit() no javascript para chamar o servlet que grava o bd apenas se as validações estiverem ok, mas ele redireciona para uma página em branco e não grava. Na verdade nem chama o servlet mesmo na URL aparecer o endereço mapeado do servlet.
Outro jeito que tentei, foi usando AJAX, já havia usado ele antes para fazer umas coisinha simles como calcular o valor de dois inputs no servlet e retornar o resultado udando o método abaixo:
function chama_cadastroServlet(){
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
alert("OK");
}
};
xmlhttp.open("POST","/CadastroServlet",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
}
ratone…
Vc está programando em jsp e servlet, certo?
Posso estar enganada, mas pelo pouco que sei de servlet vc tem que ter um submit pra submitar seu formulario ao servlet. Vc ate conseguiria chamar seu servlet sem um submit (é só chamar o servlet da mesma forma que vc chamaria uma pagina qualquer), mas dessa forma seu formulario não seria submitado, ou seja, vc nao conseguiria capturar os dados que informar no formulario. Eu faria essas validaçoes no proprio servlet. Ex: depois que vc submitar seu formulario ao servlet vc verifica se os dados estao da forma que devem estar, se nao estiverem vc pode lancar uma exceção e tratar essa exceção redirecionando para uma pagina de erro ou vc pode chamar a propria pagina do formulario so q ai vc coloca um label de erros que vai mostar o erro.
Vc poderia usar o submit mesmo. No onclick do submit vc chama o function q faz a validação retornando false se não quiser q o form seja submitado, se nao retornar nada ele submita de qualquer forma.