Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/04/2011, 13:24
paput00
 
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