Validator-rule.xml não mostra mensagem

0 respostas
sigma

Seguinte, eu consigo validar se a data inicial e menor que a data final so que nao consigo mostrar o alert ou imprimir na tela quando a regra não e satifeita.

Como faço

validator.rules.xml

<validator name="validaRangeDataIniDataFim"
            classname="br.com.web.struts.validador.ValidaRangeDataIniDataFim"
               method="validateRangeDataIniDataFim"
         methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       javax.servlet.http.HttpServletRequest"
              depends=""
                  msg="erro.validaRangeDataIniDataFim"/>

ValidaRangeDataIniDataFim.java

package br.com.web.struts.validador;

import java.util.Calendar;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.validator.Resources;

import br.com.biblioteca.datas.FormataData;

public class ValidaRangeDataIniDataFim {	
	
	public static boolean validateRangeDataIniDataFim(Object bean, ValidatorAction va,
			Field field, ActionMessages messages, HttpServletRequest request) {

		String datini = ValidatorUtils.getValueAsString(bean, field.getProperty());
		String datfim = ValidatorUtils.getValueAsString(bean, field.getVarValue("datfim"));
		
		if ((!GenericValidator.isBlankOrNull(datini)) && (!GenericValidator.isBlankOrNull(datfim))) {
			try {				
				Calendar ini = FormataData.stringToCalendar(datini, "dd/MM/yyyy");
				Calendar fim = FormataData.stringToCalendar(datfim, "dd/MM/yyyy");
				
				if (ini.getTimeInMillis() > fim.getTimeInMillis()) {
					messages.add(field.getKey(), Resources.getActionMessage(request, va, field));
					return false;
				}
			} catch (Exception e) {
				messages.add(field.getKey(), Resources.getActionMessage(request, va, field));
				return false;
			}
		}

		return true;
	}

}

Validator.xml

<form name="form_">
			<field property="datini" depends="required, date">
				<arg0 key="requerido.dataini" />
				<var>
					<var-name>datePattern</var-name>
					<var-value>dd/MM/yyyy</var-value>
				</var>
			</field>
			<field property="datfim" depends="required, date">
				<arg0 key="requerido.datafim" />
				<var>
					<var-name>datePattern</var-name>
					<var-value>dd/MM/yyyy</var-value>
				</var>
			</field>
			<field property="datini" depends="validaRangeDataIniDataFim">
				<msg name="validaRangeDataIniDataFim" key="erro.validaRangeDataIniDataFim" />			
				<var>
					<var-name>datfim</var-name>
					<var-value>datfim</var-value>
				</var>
			</field>
		</form>

Formulário

<html:javascript formName="form_" />
<form name="form_" id="form_" method="post" onSubmit="return validateForm_(this);">
  <fieldset>
  <label for="datini">Data Inicial</label>
  <input name="datini" type="text" style="width: 55px;" maxlength="10" />
  <label for="datfim">Data Final:</label>
  <input name="datfim" type="text" style="width: 55px;" maxlength="10" />
  <button type="submit" name="ok">Ok</button>
  </fieldset>
</form>

ApplicationResources.properties

erro.validaRangeDataIniDataFim = Data fim maior que a data inicio
Criado 5 de abril de 2006
Respostas 0
Participantes 1