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