Hi there, here is my implementation on the client side, it's validate
time against the pattern HH:mm, you can customize against HH:mm:ss with
ease:
<validator name="time"
            classname="MyValidatorClass"
            method="validateTime"
            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.time"
            jsFunctionName="TimeValidations">
            <javascript>
                <![CDATA[
      function validateTime(form){
            var isValid = true;
        var focusField = null;
        var i = 0;
        var fields = new Array();
        var formName = form.getAttributeNode("name");

        oTime = eval('new ' + formName.value + '_TimeValidations()');
        for (x in oTime) {
            var field = form[oTime[x][0]];
            var value = field.value;
                if ((field.disabled == false) && (value.length > 0) &&
                  (field.type == 'text' || field.type == 'textarea')) {
               var timeParts = field.value.split(":");
            var hour = timeParts[0];
            var minute = timeParts[1];
                  try{
              if(hour.length != 2 || minute.length != 2){
                fields[i++] = oTime[x][1];
                    focusField = field;
                    isValid = false;
              } else {
                if(isNaN(hour)||isNaN(minute)){
                  fields[i++] = oTime[x][1];
                      focusField = field;
                  isValid = false;
                } else {
                  hour = parseInt(hour);
                  minute = parseInt(minute);
                  if(hour>=24 || hour < 0 || minute >=60 || minute <0){
                    fields[i++] = oTime[x][1];
                        focusField = field;
                    isValid = false;
                  }
                }
              }
            } catch(e){
              fields[i++] = oTime[x][1];
                  focusField = field;
              isValid = false;
            }
              }
           }
        if (fields.length > 0) {
                    focusField.focus();
            alert(fields.join('\n'));
           }
        return isValid;
      }
        ]]>
            </javascript>
        </validator>
Here is the Server side: this method is in the MyValidatorClass
public static boolean validateTime(Object bean, ValidatorAction va,
Field field,
            ActionMessages errors, Validator validator,
HttpServletRequest request) {
        boolean result = true;
        try {
            String value = ValidatorUtils.getValueAsString(bean,
field.getProperty());
            if (!GenericValidator.isBlankOrNull(value)) {
                result = Pattern.matches("[0-2][\\d]:[0-5][\\d]", value);
                if (result == true) {
                    String hour = value.substring(0, 2);
                    String minute = value.substring(3);
                    int hourInt = Integer.parseInt(hour);
                    int minuteInt = Integer.parseInt(minute);
                    if (hourInt < 0 || hourInt >= 24 || minuteInt < 0 ||
minuteInt >= 60) {
                        result = false;
                    }
                }
            }
        } catch (NumberFormatException e) {
            result = false;
            e.printStackTrace();
        }
        if (result == false) {
            errors.add(field.getKey(),
Resources.getActionMessage(validator, request, va, field));
        }
        return result;
    }
Maybe it's not the best you can found on the web! Use it at your own risk.
Pankaj Gupta wrote:
> Is there a validation-rule for time(hh:mm:ss format) as it exists for
> date in struts validator framework? If not, has anyone implemented it?
> I dont want to reinvent the wheel.
>
> regards,
> Pankaj
>
> ---------------------------------------------------------------------
> 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