On 5/26/06, The Jasper <[EMAIL PROTECTED]> wrote:
Of course my code *doesn't* work, but I'll leave the reason why as an
exercise for the reader ;}

You need to add an error message when validation fails:

   if (beginDate.compareTo(endDate) <= 0) return true;

   ActionMessage msg = Resources.getActionMessage(validator, request,
va, field);
   errors.add(field.getKey(), msg);

   return false;

Niall

mvg,
Jasper

On 5/26/06, The Jasper <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I just happened to be working on this problem myself. I wrote a validator:
>
> public class dateValidation implements Serializable {
>
>     private static final Log log = LogFactory.getLog(dateValidation.class);
>
>
>         /* checks two date fields to see if the second field isn't earlier 
than
>          * the first field.
>          * Use in combination with Date validator to make sure date format is 
correct.
>          */
>     public static boolean beginEndDate(Object bean,
>             ValidatorAction va, Field field,
>             ActionMessages errors,
>             Validator validator,
>             HttpServletRequest request){
>
>         Date beginDate = null;
>         Date endDate   = null;
>
>         String dateBegin   = ValidatorUtils.getValueAsString(bean,
> field.getProperty());
>         String sProperty2  = field.getVarValue("endDate");
>         String dateEnd     = ValidatorUtils.getValueAsString(bean, 
sProperty2);
>         String datePattern = field.getVarValue("datePattern");
>
>         SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
>
>         try{
>                 beginDate = sdf.parse(dateBegin);
>                 endDate   = sdf.parse(dateEnd);
>         }
>         catch (ParseException e){
>
>                 if (log.isDebugEnabled()) {
>                 log.debug("Date parse failed dateBegin =[" + dateBegin
> + "] dateEnd =["+ dateEnd + "], " +
>                                           "pattern=[" + datePattern +
> "], " + e);
>             }
>         }
>
>         if (beginDate.compareTo(endDate) <= 0) return true;
>
>         return false;
>     }
>
> }
>
> you'll also need to add the following to validation-rules:
>
>      <validator name="beginEndDate"
>            
classname="nl.sogyo.intranet.timesheets.customValidators.dateValidation"
>               method="beginEndDate"
>         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"
>               depends="date"
>                   msg="errors.beginEndDate"/>
>
>
> I haven't tested it yet, so I give no guarantees.
>
> mvg,
> Jasper
>
>
> On 5/25/06, Chaudhary, Harsh <[EMAIL PROTECTED]> wrote:
> > Yeah. There is this date comparator at:
> > 
http://jakarta.apache.org/commons/validator/apidocs/org/apache/commons/validator/routines/DateValidator.html
> >
> > It has methods like compareDates etc. But you will need to call this method 
from a Java class and a custom validator seems like a good place. Considering it 
gives you access to a bunch of objects for free like the form bean, fields, the 
request object, errors object etc. You could probably do it in a separate class 
cueing off of the data from the form bean, but I think it would be much harder.
> >
> >
> > Harsh.
> >
> > -----Original Message-----
> > From: Carl Smith [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, May 25, 2006 2:31 PM
> > To: Struts Users Mailing List
> > Subject: RE: Validation for second field must greater than the first field
> >
> >
> > Harsh, Thanks for the quick response.
> >
> >   I was seeking if  Struts has the internal validator do this things. If 
not, then I agree with you in that I need to write my own custom validator easily. 
But I prefer if Struts already has this sort of comparison validator.
> >
> >
> > "Chaudhary, Harsh" <[EMAIL PROTECTED]> wrote:
> >   The solution is to write a custom validator if you want to do it server side using validator. 
In your custom validator, create 2 calendars, one each for start date and end date. Then use the method 
call "before" or "after" on these calendar.
> >
> > Harsh. Man I got a lot of free time today.
> >
> > -----Original Message-----
> > From: Carl Smith [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, May 25, 2006 2:20 PM
> > To: Struts Users Mailing List
> > Subject: Validation for second field must greater than the first field
> >
> >
> > I am not sure if this is workable, but my requirement was that
> >
> > Two Fields, startDate and endDate, I need to validate the endDate is 
greater/older than the startDate. Is this something workable/configurable using 
struts validator?
> >
> > Thanks.
> >
> >
> > ---------------------------------
> > Ring'em or ping'em. Make PC-to-phone calls as low as 1ยข/min with Yahoo! 
Messenger with Voice.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >
> > ---------------------------------
> > Do you Yahoo!?
> >  Get on board. You're invited to try the new Yahoo! Mail Beta.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to