Foros del Web » Programación para mayores de 30 ;) » Java »

Ampliar validacion con struts

Estas en el tema de Ampliar validacion con struts en el foro de Java en Foros del Web. Tengo un formulario con dos campos de fechas, y necesito que se valide que la fechafin sea posterior a la fechaini. He intentado crear una ...
  #1 (permalink)  
Antiguo 20/04/2011, 05:37
 
Fecha de Ingreso: marzo-2011
Mensajes: 9
Antigüedad: 13 años, 1 mes
Puntos: 0
Ampliar validacion con struts

Tengo un formulario con dos campos de fechas, y necesito que se valide que la fechafin sea posterior a la fechaini. He intentado crear una nueva regla de validator (trabajo con struts 1.3.9) y he conseguido que lo valide en el servidor, pero yo necesito que lo valide en el cliente (el campo fecha ya valida en cliente required y el pattern de la fecha y me da un aviso en javascript si no es correcto) pero no he conseguido que me salte el aviso para la nueva regla de validación. ¿Cómo puedo hacer para que si en el nuevo validator no se cumple la condición, antes de enviarlo al servidor me salte un mensaje en javascript avisàndome del error?
Gracias
  #2 (permalink)  
Antiguo 22/04/2011, 11:41
 
Fecha de Ingreso: marzo-2011
Mensajes: 9
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ampliar validacion con struts

Lo que he hecho hasta ahora es crear una clase MiValidacion donde sí que valida las dos fechas a comprobar, con el método gesAsString recoge las fechas y comprueba si la fecha de salida es más reciente que la de entrada. El problema es que esto lo hace ya en el servidor y yo quisiera (como las reglas required y minlenht que ya utilizo en el campo fechaSalida) que el navegador me lanzara una ventana de alerta. Esto sé que hay que hacerlo con javascript y creo que en el fichero validation.xml cuando declaro mi validator puedo añadir javascript, pero no sé programar la función.
Gracias
  #3 (permalink)  
Antiguo 23/04/2011, 13:24
 
Fecha de Ingreso: marzo-2011
Mensajes: 9
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ampliar validacion con struts

A ver si alguien me puede ayudar, que sigo parado en el mismo problema y no encuentro ninguna solución por la web.
He creado una clase ValidarInterval
Código:
package validacions;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.*;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.validator.Resources;

import util.FormatDates;

public class ValidarInterval {        
	    public static boolean validateInterval ( 
	        Object object,
	        ValidatorAction va,
	        Field field,
	        ActionMessages errors,
	        Validator v,
	        HttpServletRequest request) {


		String value = ValidatorUtils.getValueAsString(object, field.getProperty());
		String value2 = ValidatorUtils.getValueAsString(object,"dataEnt");
	    FormatDates fd = new FormatDates();
		if (fd.getComparacio(value2, value)>=0) {
			errors.add("name",new ActionMessage("errors.interval"));
		return false;
		}
	    return true;
	}
}
y he añadido la regla siguiente a validator-rules.xml
Código:
<validator name="intervaldates"
                   classname="validacions.ValidarInterval"
                   method="validateInterval"
                   methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       org.apache.commons.validator.Validator,
                       javax.servlet.http.HttpServletRequest"
                   msg="errors.interval">
        <javascript><![CDATA[
                function validateInterval(form) {
				alert("Dins javascript"}
				document.ReservaForm.dataSort.focus();
				return 0;
        }
        ]]>
        </javascript>
        </validator>
y he añadido a validation.xml que valide en el campo dataSort, además de las que ya valida required, date, intervaldates.

Pues bien, cuando los campos de fecha de entrada y salida no cumplen la condición de validación, struts-config.xml me envía a la página que le tengo puesto el input, pero si por ejemplo pongo el campo dataSort vacío (y no cumple la rengla estándar required) me sale un mensaje de alerta de javascript avisándome y me devuelve al formulario. O sea, el problema es que no me valida la nueva relga en el cliente, que es lo que yo quiero que haga.
¿Alguien sabe que estoy haciento mal?
Gracias
  #4 (permalink)  
Antiguo 23/04/2011, 14:59
 
Fecha de Ingreso: marzo-2011
Mensajes: 9
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ampliar validacion con struts

Vaya, tenía un error en la función javascript y por eso no funcionaba (la verdad es que con javascript se hace difícil trabajar, meparece a mi).
la función ha quedado así
Código:
function validateInterval(form) {
var dEnt=form.dataEnt.value;
var dSort = form.dataSort.value;
if (mayorQue(dSort,dEnt) {
return true;
}else {
alert("Intervalo no correcto");
return false;
}
}
Ahora el problema es que quiero que el mensaje de error lo coja de ApplicationResoruces.
Supongo que en vez de alert("Intervalo no correcto")
hay que poner otra cosa.
¿Alguien sabe como solucionarlo?
  #5 (permalink)  
Antiguo 02/05/2011, 07:59
 
Fecha de Ingreso: abril-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: Ampliar validacion con struts

Hola Karma. He visto tu problema, no se ocmo se soluciona, pero me interesa lo qeu haz expuesto. Pregunto: como haces para utilizar el validator desde la jsp? lo haz declarado como interceptor en el struts.xml?
saludos.

Etiquetas: struts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:23.