Llamada a un servlet

Marta Beatriz
28 de Enero del 2002
Tenemos un formulario con javascript para validar los campos. En "FORM ACTION" llamamos a un servlet, pero queremos que si el usuario ha rellenado mal algún campo y recibe una alerta no se ejecute la acción y no se llame al servlet, sino que se pare y quede en la página del formulario hasta que el usuario introduzca los datos válidos. ¿Se puede ejecutar o no el FORM ACTION según una condición? Gracias

ebc
28 de Enero del 2002
Otro "truco" es cambiar el tipo de botón que envía el formulario. En vez de crear un botón de tipo SUBMIT, lo creamos como botón normal, es decir , de tipo BUTTON. En el ONCLICK de este botón hacemos la llamada al script de validación, y si todo es correcto, entonces dese el propio script hacemos la llamada al submit del objeto Formulario.

sergi
28 de Enero del 2002
Puedes modificar el valor del form action dependiendo de lo que desees con Javascript segun la llamada:
[window].document.formName.action = ...
Pero seguramente sería muy costoso, y no podrías volver a rellenar todos los campos que anteriormente estaban rellenado. Sería bastante más óptimo realizar esta comprobación en un servlet una vez recibamos los datos, y redireccionando a una página de error, enviando los datos que no sean nulls.

drew
28 de Enero del 2002
La solucion es bastante facil.
Se pueden validar los datos en la parte del cliente mediante javascript antes de mandarlos al servidor donde seran tratados por el servlet.
Para asegurarte de que todos los campos estan correctamente rellenados tendras que hacer una validación javascipt y decidir entonces si mandas o no la peticion al servlet.
Para ello te explico el siguiente ejemplo:

Supongamos que tenemos un formulario con un unico campo de texto el cual debe tener al menos 4 caracteres y no queremos que se envie el foemulario sin que se haya cumplido esa condicion:

<form name="miFormulario" action="MiServlet" method="post" onsubmit="return realizaValidacion();">
<input type="text" name="nombre" value="">
</form>

El truco esta en la funcion return realizaValidacion() --->

function realizaValidacion() {
if(document.miFormulario.nombre.value.length<4){
alert("debe introducir al menos 4 caracteres")
return false; //cancelamos la propagacion de eventos y el formulario no se envia
} else {
//todo ha ido correcto y dejamos que el formulario se transmita
return true;
}
}

Todo esto es un ejemplo basico pero que seguro que te aportara algo de luz.
Si tienes dudas, escribeme.