Hi just put the <validator....></validator> into the validator-rules.xml
of the Struts Validation Framework. And create a Java class contain the
validation method as I posted before. If you want to use it in your
code, do something like this:
<field property="startTime"   depends="time">
        <arg0 key="your.message.key"/>
 </field>
Good luck
Pankaj Gupta wrote:
>
> Hi,
>
> I tried using your code but its not working. Can you please tell me
> what do I need to write in validation.xml.
>
> I am writing this:
> <field property="startTime"
>                    depends="time">
>               <arg0 key=""/>
>                         </field>
>
> Truong Xuan Tinh wrote:
>>  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]
>>
>>
>>   
>
> ---------------------------------------------------------------------
> 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