Statistics
| Branch: | Revision:

m2u-upass-admin / WebContent / WEB-INF / validator-rules.xml @ 58:0f4d9c4cfc1e

History | View | Annotate | Download (39.3 KB)

1 0:ea666cc7880e hadi
<!DOCTYPE form-validation PUBLIC
2
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
3
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
4
<!--
5

6
   This file contains the default Struts Validator pluggable validator
7
   definitions.  It should be placed somewhere under /WEB-INF and
8
   referenced in the struts-config.xml under the plug-in element
9
   for the ValidatorPlugIn.
10

11
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
12
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
13
                                                  /WEB-INF/validation.xml"/>
14
      </plug-in>
15

16
   These are the default error messages associated with
17
   each validator defined in this file.  They should be
18
   added to your projects ApplicationResources.properties
19
   file or you can associate new ones by modifying the
20
   pluggable validators msg attributes in this file.
21

22
   # Struts Validator Error Messages
23
   errors.required={0} is required.
24
   errors.minlength={0} can not be less than {1} characters.
25
   errors.maxlength={0} can not be greater than {1} characters.
26
   errors.invalid={0} is invalid.
27

28
   errors.byte={0} must be a byte.
29
   errors.short={0} must be a short.
30
   errors.integer={0} must be an integer.
31
   errors.long={0} must be a long.
32
   errors.float={0} must be a float.
33
   errors.double={0} must be a double.
34

35
   errors.date={0} is not a date.
36
   errors.range={0} is not in the range {1} through {2}.
37
   errors.creditcard={0} is an invalid credit card number.
38
   errors.email={0} is an invalid e-mail address.
39

40
-->
41
42
<form-validation>
43
44
   <global>
45
46
      <validator name="required"
47
            classname="org.apache.struts.validator.FieldChecks"
48
               method="validateRequired"
49
         methodParams="java.lang.Object,
50
                       org.apache.commons.validator.ValidatorAction,
51
                       org.apache.commons.validator.Field,
52
                       org.apache.struts.action.ActionErrors,
53
                       javax.servlet.http.HttpServletRequest"
54
                  msg="errors.required">
55
56
         <javascript><![CDATA[
57
            function validateRequired(form) {
58
                var bValid = true;
59
                var focusField = null;
60
                var i = 0;
61
                var fields = new Array();
62
                oRequired = new required();
63
                for (x in oRequired) {
64
                        var field = form[oRequired[x][0]];
65
66
                    if (field.type == 'text' ||
67
                        field.type == 'textarea' ||
68
                        field.type == 'file' ||
69
                        field.type == 'select-one' ||
70
                        field.type == 'radio' ||
71
                        field.type == 'password') {
72
73
                        var value = '';
74
                                                // get field's value
75
                                                if (field.type == "select-one") {
76
                                                        var si = field.selectedIndex;
77
                                                        if (si >= 0) {
78
                                                                value = field.options[si].value;
79
                                                        }
80
                                                } else {
81
                                                        value = field.value;
82
                                                }
83
84
                        if (value == '') {
85
86
                                if (i == 0) {
87
                                    focusField = field;
88
                                }
89
                                fields[i++] = oRequired[x][1];
90
                                bValid = false;
91
                        }
92
                    }
93
                }
94
                if (fields.length > 0) {
95
                   focusField.focus();
96
                   alert(fields.join('\n'));
97
                }
98
                return bValid;
99
            }]]>
100
         </javascript>
101
102
      </validator>
103
104
      <validator name="requiredif"
105
                 classname="org.apache.struts.validator.FieldChecks"
106
                 method="validateRequiredIf"
107
                 methodParams="java.lang.Object,
108
                               org.apache.commons.validator.ValidatorAction,
109
                               org.apache.commons.validator.Field,
110
                               org.apache.struts.action.ActionErrors,
111
                               org.apache.commons.validator.Validator,
112
                               javax.servlet.http.HttpServletRequest"
113
                 msg="errors.required">
114
      </validator>
115
116
      <validator name="minlength"
117
            classname="org.apache.struts.validator.FieldChecks"
118
               method="validateMinLength"
119
         methodParams="java.lang.Object,
120
                       org.apache.commons.validator.ValidatorAction,
121
                       org.apache.commons.validator.Field,
122
                       org.apache.struts.action.ActionErrors,
123
                       javax.servlet.http.HttpServletRequest"
124
              depends=""
125
                  msg="errors.minlength">
126
127
         <javascript><![CDATA[
128
            function validateMinLength(form) {
129
                var bValid = true;
130
                var focusField = null;
131
                var i = 0;
132
                var fields = new Array();
133
                oMinLength = new minlength();
134
                for (x in oMinLength) {
135
                    if (form[oMinLength[x][0]].type == 'text' ||
136
                        form[oMinLength[x][0]].type == 'textarea') {
137
                        var iMin = parseInt(oMinLength[x][2]("minlength"));
138
                        if (form[oMinLength[x][0]].value.length < iMin) {
139
                            if (i == 0) {
140
                                focusField = form[oMinLength[x][0]];
141
                            }
142
                            fields[i++] = oMinLength[x][1];
143
                            bValid = false;
144
                        }
145
                    }
146
                }
147
                if (fields.length > 0) {
148
                   focusField.focus();
149
                   alert(fields.join('\n'));
150
                }
151
                return bValid;
152
            }]]>
153
         </javascript>
154
155
      </validator>
156
157
158
      <validator name="maxlength"
159
            classname="org.apache.struts.validator.FieldChecks"
160
               method="validateMaxLength"
161
         methodParams="java.lang.Object,
162
                       org.apache.commons.validator.ValidatorAction,
163
                       org.apache.commons.validator.Field,
164
                       org.apache.struts.action.ActionErrors,
165
                       javax.servlet.http.HttpServletRequest"
166
              depends=""
167
                  msg="errors.maxlength">
168
169
         <javascript><![CDATA[
170
            function validateMaxLength(form) {
171
                var bValid = true;
172
                var focusField = null;
173
                var i = 0;
174
                var fields = new Array();
175
                oMaxLength = new maxlength();
176
                for (x in oMaxLength) {
177
                    if (form[oMaxLength[x][0]].type == 'text' ||
178
                        form[oMaxLength[x][0]].type == 'textarea') {
179
                        var iMax = parseInt(oMaxLength[x][2]("maxlength"));
180
                        if (form[oMaxLength[x][0]].value.length > iMax) {
181
                            if (i == 0) {
182
                                focusField = form[oMaxLength[x][0]];
183
                            }
184
                            fields[i++] = oMaxLength[x][1];
185
                            bValid = false;
186
                        }
187
                    }
188
                }
189
                if (fields.length > 0) {
190
                   focusField.focus();
191
                   alert(fields.join('\n'));
192
                }
193
                return bValid;
194
            }]]>
195
         </javascript>
196
197
      </validator>
198
199
200
      <validator name="mask"
201
            classname="org.apache.struts.validator.FieldChecks"
202
               method="validateMask"
203
         methodParams="java.lang.Object,
204
                       org.apache.commons.validator.ValidatorAction,
205
                       org.apache.commons.validator.Field,
206
                       org.apache.struts.action.ActionErrors,
207
                       javax.servlet.http.HttpServletRequest"
208
              depends=""
209
                  msg="errors.invalid">
210
211
         <javascript><![CDATA[
212
            function validateMask(form) {
213
                var bValid = true;
214
                var focusField = null;
215
                var i = 0;
216
                var fields = new Array();
217
                oMasked = new mask();
218
                for (x in oMasked) {
219
                    if ((form[oMasked[x][0]].type == 'text' ||
220
                         form[oMasked[x][0]].type == 'textarea' ||
221
                         form[oMasked[x][0]].type == 'password') &&
222
                        (form[oMasked[x][0]].value.length > 0)) {
223
                        if (!matchPattern(form[oMasked[x][0]].value, oMasked[x][2]("mask"))) {
224
                            if (i == 0) {
225
                                focusField = form[oMasked[x][0]];
226
                            }
227
                            fields[i++] = oMasked[x][1];
228
                            bValid = false;
229
                        }
230
                    }
231
                }
232
                if (fields.length > 0) {
233
                   focusField.focus();
234
                   alert(fields.join('\n'));
235
                }
236
                return bValid;
237
            }
238
239
            function matchPattern(value, mask) {
240
               var bMatched = mask.exec(value);
241
               if (!bMatched) {
242
                   return false;
243
               }
244
               return true;
245
            }]]>
246
         </javascript>
247
248
      </validator>
249
250
251
      <validator name="byte"
252
            classname="org.apache.struts.validator.FieldChecks"
253
               method="validateByte"
254
         methodParams="java.lang.Object,
255
                       org.apache.commons.validator.ValidatorAction,
256
                       org.apache.commons.validator.Field,
257
                       org.apache.struts.action.ActionErrors,
258
                       javax.servlet.http.HttpServletRequest"
259
              depends=""
260
                  msg="errors.byte"
261
       jsFunctionName="ByteValidations">
262
263
         <javascript><![CDATA[
264
            function validateByte(form) {
265
                var bValid = true;
266
                var focusField = null;
267
                var i = 0;
268
                var fields = new Array();
269
                oByte = new ByteValidations();
270
                for (x in oByte) {
271
                        var field = form[oByte[x][0]];
272
273
                    if (field.type == 'text' ||
274
                        field.type == 'textarea' ||
275
                        field.type == 'select-one' ||
276
                                                field.type == 'radio') {
277
278
                                                var value = '';
279
                                                // get field's value
280
                                                if (field.type == "select-one") {
281
                                                        var si = field.selectedIndex;
282
                                                        if (si >= 0) {
283
                                                                value = field.options[si].value;
284
                                                        }
285
                                                } else {
286
                                                        value = field.value;
287
                                                }
288
289
                        if (value.length > 0) {
290
291
                                var iValue = parseInt(value);
292
                                if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
293
                                    if (i == 0) {
294
                                        focusField = field;
295
                                    }
296
                                    fields[i++] = oByte[x][1];
297
                                    bValid = false;
298
                                }
299
                                                }
300
301
                    }
302
                }
303
                if (fields.length > 0) {
304
                   focusField.focus();
305
                   alert(fields.join('\n'));
306
                }
307
                return bValid;
308
            }]]>
309
         </javascript>
310
311
      </validator>
312
313
314
      <validator name="short"
315
            classname="org.apache.struts.validator.FieldChecks"
316
               method="validateShort"
317
         methodParams="java.lang.Object,
318
                       org.apache.commons.validator.ValidatorAction,
319
                       org.apache.commons.validator.Field,
320
                       org.apache.struts.action.ActionErrors,
321
                       javax.servlet.http.HttpServletRequest"
322
              depends=""
323
                  msg="errors.short"
324
       jsFunctionName="ShortValidations">
325
326
         <javascript><![CDATA[
327
            function validateShort(form) {
328
                var bValid = true;
329
                var focusField = null;
330
                var i = 0;
331
                var fields = new Array();
332
                oShort = new ShortValidations();
333
                for (x in oShort) {
334
                        var field = form[oShort[x][0]];
335
336
                    if (field.type == 'text' ||
337
                        field.type == 'textarea' ||
338
                        field.type == 'select-one' ||
339
                        field.type == 'radio') {
340
341
                        var value = '';
342
                                                // get field's value
343
                                                if (field.type == "select-one") {
344
                                                        var si = field.selectedIndex;
345
                                                        if (si >= 0) {
346
                                                                value = field.options[si].value;
347
                                                        }
348
                                                } else {
349
                                                        value = field.value;
350
                                                }
351
352
                        if (value.length > 0) {
353
354
                                var iValue = parseInt(value);
355
                                if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
356
                                    if (i == 0) {
357
                                        focusField = field;
358
                                    }
359
                                    fields[i++] = oShort[x][1];
360
                                    bValid = false;
361
                               }
362
                       }
363
                    }
364
                }
365
                if (fields.length > 0) {
366
                   focusField.focus();
367
                   alert(fields.join('\n'));
368
                }
369
                return bValid;
370
            }]]>
371
         </javascript>
372
373
      </validator>
374
375
376
      <validator name="integer"
377
            classname="org.apache.struts.validator.FieldChecks"
378
               method="validateInteger"
379
         methodParams="java.lang.Object,
380
                       org.apache.commons.validator.ValidatorAction,
381
                       org.apache.commons.validator.Field,
382
                       org.apache.struts.action.ActionErrors,
383
                       javax.servlet.http.HttpServletRequest"
384
              depends=""
385
                  msg="errors.integer"
386
       jsFunctionName="IntegerValidations">
387
388
         <javascript><![CDATA[
389
            function validateInteger(form) {
390
                var bValid = true;
391
                var focusField = null;
392
                var i = 0;
393
                var fields = new Array();
394
                oInteger = new IntegerValidations();
395
                for (x in oInteger) {
396
                        var field = form[oInteger[x][0]];
397
398
                    if (field.type == 'text' ||
399
                        field.type == 'textarea' ||
400
                        field.type == 'select-one' ||
401
                        field.type == 'radio') {
402
403
                        var value = '';
404
                                                // get field's value
405
                                                if (field.type == "select-one") {
406
                                                        var si = field.selectedIndex;
407
                                                    if (si >= 0) {
408
                                                            value = field.options[si].value;
409
                                                    }
410
                                                } else {
411
                                                        value = field.value;
412
                                                }
413
414
                        if (value.length > 0) {
415
416
                            if (!isAllDigits(value)) {
417
                                bValid = false;
418
                            } else {
419
                                    var iValue = parseInt(value);
420
                                    if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
421
                                        if (i == 0) {
422
                                            focusField = field;
423
                                        }
424
                                        fields[i++] = oInteger[x][1];
425
                                        bValid = false;
426
                                   }
427
                           }
428
                       }
429
                    }
430
                }
431
                if (fields.length > 0) {
432
                   focusField.focus();
433
                   alert(fields.join('\n'));
434
                }
435
                return bValid;
436
            }
437
438
            function isAllDigits(argvalue) {
439
                argvalue = argvalue.toString();
440
                var validChars = "0123456789";
441
                var startFrom = 0;
442
                if (argvalue.substring(0, 2) == "0x") {
443
                   validChars = "0123456789abcdefABCDEF";
444
                   startFrom = 2;
445
                } else if (argvalue.charAt(0) == "0") {
446
                   validChars = "01234567";
447
                   startFrom = 1;
448
                }
449
                for (var n = 0; n < argvalue.length; n++) {
450
                    if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
451
                }
452
                return true;
453
            }]]>
454
         </javascript>
455
456
      </validator>
457
458
459
      <validator name="long"
460
            classname="org.apache.struts.validator.FieldChecks"
461
               method="validateLong"
462
         methodParams="java.lang.Object,
463
                       org.apache.commons.validator.ValidatorAction,
464
                       org.apache.commons.validator.Field,
465
                       org.apache.struts.action.ActionErrors,
466
                       javax.servlet.http.HttpServletRequest"
467
              depends=""
468
                  msg="errors.long"/>
469
470
471
      <validator name="float"
472
            classname="org.apache.struts.validator.FieldChecks"
473
               method="validateFloat"
474
         methodParams="java.lang.Object,
475
                       org.apache.commons.validator.ValidatorAction,
476
                       org.apache.commons.validator.Field,
477
                       org.apache.struts.action.ActionErrors,
478
                       javax.servlet.http.HttpServletRequest"
479
              depends=""
480
                  msg="errors.float"
481
       jsFunctionName="FloatValidations">
482
483
         <javascript><![CDATA[
484
            function validateFloat(form) {
485
                var bValid = true;
486
                var focusField = null;
487
                var i = 0;
488
                var fields = new Array();
489
                oFloat = new FloatValidations();
490
                for (x in oFloat) {
491
                        var field = form[oFloat[x][0]];
492
493
                    if (field.type == 'text' ||
494
                        field.type == 'textarea' ||
495
                        field.type == 'select-one' ||
496
                        field.type == 'radio') {
497
498
                            var value = '';
499
                                                // get field's value
500
                                                if (field.type == "select-one") {
501
                                                        var si = field.selectedIndex;
502
                                                        if (si >= 0) {
503
                                                            value = field.options[si].value;
504
                                                        }
505
                                                } else {
506
                                                        value = field.value;
507
                                                }
508
509
                        if (value.length > 0) {
510
511
                                var iValue = parseFloat(value);
512
                                if (isNaN(iValue)) {
513
                                    if (i == 0) {
514
                                        focusField = field;
515
                                    }
516
                                    fields[i++] = oFloat[x][1];
517
                                    bValid = false;
518
                                }
519
                        }
520
                    }
521
                }
522
                if (fields.length > 0) {
523
                   focusField.focus();
524
                   alert(fields.join('\n'));
525
                }
526
                return bValid;
527
            }]]>
528
         </javascript>
529
530
      </validator>
531
532
533
      <validator name="double"
534
            classname="org.apache.struts.validator.FieldChecks"
535
               method="validateDouble"
536
         methodParams="java.lang.Object,
537
                       org.apache.commons.validator.ValidatorAction,
538
                       org.apache.commons.validator.Field,
539
                       org.apache.struts.action.ActionErrors,
540
                       javax.servlet.http.HttpServletRequest"
541
              depends=""
542
                  msg="errors.numeric"/>
543
544
545
      <validator name="date"
546
            classname="org.apache.struts.validator.FieldChecks"
547
               method="validateDate"
548
         methodParams="java.lang.Object,
549
                       org.apache.commons.validator.ValidatorAction,
550
                       org.apache.commons.validator.Field,
551
                       org.apache.struts.action.ActionErrors,
552
                       javax.servlet.http.HttpServletRequest"
553
              depends=""
554
                  msg="errors.date"
555
       jsFunctionName="DateValidations">
556
557
         <javascript><![CDATA[
558
            function validateDate(form) {
559
               var bValid = true;
560
               var focusField = null;
561
               var i = 0;
562
               var fields = new Array();
563
               oDate = new DateValidations();
564
               for (x in oDate) {
565
                   var value = form[oDate[x][0]].value;
566
                   var datePattern = oDate[x][2]("datePatternStrict");
567
                   if ((form[oDate[x][0]].type == 'text' ||
568
                        form[oDate[x][0]].type == 'textarea') &&
569
                       (value.length > 0) &&
570
                       (datePattern.length > 0)) {
571
                     var MONTH = "MM";
572
                     var DAY = "dd";
573
                     var YEAR = "yyyy";
574
                     var orderMonth = datePattern.indexOf(MONTH);
575
                     var orderDay = datePattern.indexOf(DAY);
576
                     var orderYear = datePattern.indexOf(YEAR);
577
                     if ((orderDay < orderYear && orderDay > orderMonth)) {
578
                         var iDelim1 = orderMonth + MONTH.length;
579
                         var iDelim2 = orderDay + DAY.length;
580
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
581
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
582
                         if (iDelim1 == orderDay && iDelim2 == orderYear) {
583
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
584
                         } else if (iDelim1 == orderDay) {
585
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
586
                         } else if (iDelim2 == orderYear) {
587
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
588
                         } else {
589
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
590
                         }
591
                         var matched = dateRegexp.exec(value);
592
                         if(matched != null) {
593
                            if (!isValidDate(matched[2], matched[1], matched[3])) {
594
                               if (i == 0) {
595
                                   focusField = form[oDate[x][0]];
596
                               }
597
                               fields[i++] = oDate[x][1];
598
                               bValid =  false;
599
                            }
600
                         } else {
601
                            if (i == 0) {
602
                                focusField = form[oDate[x][0]];
603
                            }
604
                            fields[i++] = oDate[x][1];
605
                            bValid =  false;
606
                         }
607
                     } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
608
                         var iDelim1 = orderDay + DAY.length;
609
                         var iDelim2 = orderMonth + MONTH.length;
610
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
611
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
612
                         if (iDelim1 == orderMonth && iDelim2 == orderYear) {
613
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
614
                         } else if (iDelim1 == orderMonth) {
615
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
616
                         } else if (iDelim2 == orderYear) {
617
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
618
                         } else {
619
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
620
                         }
621
                         var matched = dateRegexp.exec(value);
622
                         if(matched != null) {
623
                             if (!isValidDate(matched[1], matched[2], matched[3])) {
624
                                 if (i == 0) {
625
                                     focusField = form[oDate[x][0]];
626
                                 }
627
                                 fields[i++] = oDate[x][1];
628
                                 bValid =  false;
629
                              }
630
                         } else {
631
                             if (i == 0) {
632
                                 focusField = form[oDate[x][0]];
633
                             }
634
                             fields[i++] = oDate[x][1];
635
                             bValid =  false;
636
                         }
637
                     } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
638
                         var iDelim1 = orderYear + YEAR.length;
639
                         var iDelim2 = orderMonth + MONTH.length;
640
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
641
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
642
                         if (iDelim1 == orderMonth && iDelim2 == orderDay) {
643
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
644
                         } else if (iDelim1 == orderMonth) {
645
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
646
                         } else if (iDelim2 == orderDay) {
647
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
648
                         } else {
649
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
650
                         }
651
                         var matched = dateRegexp.exec(value);
652
                         if(matched != null) {
653
                             if (!isValidDate(matched[3], matched[2], matched[1])) {
654
                                 if (i == 0) {
655
                                     focusField = form[oDate[x][0]];
656
                                  }
657
                                  fields[i++] = oDate[x][1];
658
                                  bValid =  false;
659
                              }
660
                          } else {
661
                              if (i == 0) {
662
                                  focusField = form[oDate[x][0]];
663
                              }
664
                              fields[i++] = oDate[x][1];
665
                              bValid =  false;
666
                          }
667
                     } else {
668
                         if (i == 0) {
669
                             focusField = form[oDate[x][0]];
670
                         }
671
                         fields[i++] = oDate[x][1];
672
                         bValid =  false;
673
                     }
674
                  }
675
               }
676
               if (fields.length > 0) {
677
                  focusField.focus();
678
                  alert(fields.join('\n'));
679
               }
680
               return bValid;
681
            }
682
683
            function isValidDate(day, month, year) {
684
                if (month < 1 || month > 12) {
685
                    return false;
686
                }
687
                if (day < 1 || day > 31) {
688
                    return false;
689
                }
690
                if ((month == 4 || month == 6 || month == 9 || month == 11) &&
691
                    (day == 31)) {
692
                    return false;
693
                }
694
                if (month == 2) {
695
                    var leap = (year % 4 == 0 &&
696
                               (year % 100 != 0 || year % 400 == 0));
697
                    if (day>29 || (day == 29 && !leap)) {
698
                        return false;
699
                    }
700
                }
701
                return true;
702
            }]]>
703
         </javascript>
704
705
      </validator>
706
707
<!-- range is deprecated use intRange instead -->
708
      <validator name="range"
709
            classname="org.apache.struts.validator.FieldChecks"
710
               method="validateIntRange"
711
         methodParams="java.lang.Object,
712
                       org.apache.commons.validator.ValidatorAction,
713
                       org.apache.commons.validator.Field,
714
                       org.apache.struts.action.ActionErrors,
715
                       javax.servlet.http.HttpServletRequest"
716
              depends="integer"
717
                  msg="errors.range">
718
719
         <javascript><![CDATA[
720
            function validateRange(form) {
721
                return validateIntRange(form);
722
            }]]>
723
         </javascript>
724
725
      </validator>
726
727
      <validator name="intRange"
728
            classname="org.apache.struts.validator.FieldChecks"
729
               method="validateIntRange"
730
         methodParams="java.lang.Object,
731
                       org.apache.commons.validator.ValidatorAction,
732
                       org.apache.commons.validator.Field,
733
                       org.apache.struts.action.ActionErrors,
734
                       javax.servlet.http.HttpServletRequest"
735
              depends="integer"
736
                  msg="errors.range">
737
738
         <javascript><![CDATA[
739
            function validateIntRange(form) {
740
                var bValid = true;
741
                var focusField = null;
742
                var i = 0;
743
                var fields = new Array();
744
                oRange = new intRange();
745
                for (x in oRange) {
746
                    if ((form[oRange[x][0]].type == 'text' ||
747
                         form[oRange[x][0]].type == 'textarea') &&
748
                        (form[oRange[x][0]].value.length > 0)) {
749
                        var iMin = parseInt(oRange[x][2]("min"));
750
                        var iMax = parseInt(oRange[x][2]("max"));
751
                        var iValue = parseInt(form[oRange[x][0]].value);
752
                        if (!(iValue >= iMin && iValue <= iMax)) {
753
                            if (i == 0) {
754
                                focusField = form[oRange[x][0]];
755
                            }
756
                            fields[i++] = oRange[x][1];
757
                            bValid = false;
758
                        }
759
                    }
760
                }
761
                if (fields.length > 0) {
762
                    focusField.focus();
763
                    alert(fields.join('\n'));
764
                }
765
                return bValid;
766
            }]]>
767
         </javascript>
768
769
      </validator>
770
771
      <validator name="floatRange"
772
            classname="org.apache.struts.validator.FieldChecks"
773
               method="validateFloatRange"
774
         methodParams="java.lang.Object,
775
                       org.apache.commons.validator.ValidatorAction,
776
                       org.apache.commons.validator.Field,
777
                       org.apache.struts.action.ActionErrors,
778
                       javax.servlet.http.HttpServletRequest"
779
              depends="float"
780
                  msg="errors.range">
781
782
         <javascript><![CDATA[
783
            function validateFloatRange(form) {
784
                var bValid = true;
785
                var focusField = null;
786
                var i = 0;
787
                var fields = new Array();
788
                oRange = new floatRange();
789
                for (x in oRange) {
790
                    if ((form[oRange[x][0]].type == 'text' ||
791
                         form[oRange[x][0]].type == 'textarea') &&
792
                        (form[oRange[x][0]].value.length > 0)) {
793
                        var fMin = parseFloat(oRange[x][2]("min"));
794
                        var fMax = parseFloat(oRange[x][2]("max"));
795
                        var fValue = parseFloat(form[oRange[x][0]].value);
796
                        if (!(fValue >= fMin && fValue <= fMax)) {
797
                            if (i == 0) {
798
                                focusField = form[oRange[x][0]];
799
                            }
800
                            fields[i++] = oRange[x][1];
801
                            bValid = false;
802
                        }
803
                    }
804
                }
805
                if (fields.length > 0) {
806
                    focusField.focus();
807
                    alert(fields.join('\n'));
808
                }
809
                return bValid;
810
            }]]>
811
         </javascript>
812
813
      </validator>
814
815
      <validator name="creditCard"
816
            classname="org.apache.struts.validator.FieldChecks"
817
               method="validateCreditCard"
818
         methodParams="java.lang.Object,
819
                       org.apache.commons.validator.ValidatorAction,
820
                       org.apache.commons.validator.Field,
821
                       org.apache.struts.action.ActionErrors,
822
                       javax.servlet.http.HttpServletRequest"
823
              depends=""
824
                  msg="errors.creditcard">
825
826
         <javascript><![CDATA[
827
            function validateCreditCard(form) {
828
                var bValid = true;
829
                var focusField = null;
830
                var i = 0;
831
                var fields = new Array();
832
                oCreditCard = new creditCard();
833
                for (x in oCreditCard) {
834
                    if ((form[oCreditCard[x][0]].type == 'text' ||
835
                         form[oCreditCard[x][0]].type == 'textarea') &&
836
                        (form[oCreditCard[x][0]].value.length > 0)) {
837
                        if (!luhnCheck(form[oCreditCard[x][0]].value)) {
838
                            if (i == 0) {
839
                                focusField = form[oCreditCard[x][0]];
840
                            }
841
                            fields[i++] = oCreditCard[x][1];
842
                            bValid = false;
843
                        }
844
                    }
845
                }
846
                if (fields.length > 0) {
847
                    focusField.focus();
848
                    alert(fields.join('\n'));
849
                }
850
                return bValid;
851
            }
852
853
            /**
854
             * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
855
             */
856
            function luhnCheck(cardNumber) {
857
                if (isLuhnNum(cardNumber)) {
858
                    var no_digit = cardNumber.length;
859
                    var oddoeven = no_digit & 1;
860
                    var sum = 0;
861
                    for (var count = 0; count < no_digit; count++) {
862
                        var digit = parseInt(cardNumber.charAt(count));
863
                        if (!((count & 1) ^ oddoeven)) {
864
                            digit *= 2;
865
                            if (digit > 9) digit -= 9;
866
                        };
867
                        sum += digit;
868
                    };
869
                    if (sum == 0) return false;
870
                    if (sum % 10 == 0) return true;
871
                };
872
                return false;
873
            }
874
875
            function isLuhnNum(argvalue) {
876
                argvalue = argvalue.toString();
877
                if (argvalue.length == 0) {
878
                    return false;
879
                }
880
                for (var n = 0; n < argvalue.length; n++) {
881
                    if ((argvalue.substring(n, n+1) < "0") ||
882
                        (argvalue.substring(n,n+1) > "9")) {
883
                        return false;
884
                    }
885
                }
886
                return true;
887
            }]]>
888
         </javascript>
889
890
      </validator>
891
892
893
      <validator name="email"
894
            classname="org.apache.struts.validator.FieldChecks"
895
               method="validateEmail"
896
         methodParams="java.lang.Object,
897
                       org.apache.commons.validator.ValidatorAction,
898
                       org.apache.commons.validator.Field,
899
                       org.apache.struts.action.ActionErrors,
900
                       javax.servlet.http.HttpServletRequest"
901
              depends=""
902
                  msg="errors.email">
903
904
         <javascript><![CDATA[
905
            function validateEmail(form) {
906
                var bValid = true;
907
                var focusField = null;
908
                var i = 0;
909
                var fields = new Array();
910
                oEmail = new email();
911
                for (x in oEmail) {
912
                    if ((form[oEmail[x][0]].type == 'text' ||
913
                         form[oEmail[x][0]].type == 'textarea') &&
914
                        (form[oEmail[x][0]].value.length > 0)) {
915
                        if (!checkEmail(form[oEmail[x][0]].value)) {
916
                            if (i == 0) {
917
                                focusField = form[oEmail[x][0]];
918
                            }
919
                            fields[i++] = oEmail[x][1];
920
                            bValid = false;
921
                        }
922
                    }
923
                }
924
                if (fields.length > 0) {
925
                    focusField.focus();
926
                    alert(fields.join('\n'));
927
                }
928
                return bValid;
929
            }
930
931
            /**
932
             * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
933
             * http://javascript.internet.com
934
             */
935
            function checkEmail(emailStr) {
936
               if (emailStr.length == 0) {
937
                   return true;
938
               }
939
               var emailPat=/^(.+)@(.+)$/;
940
               var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
941
               var validChars="\[^\\s" + specialChars + "\]";
942
               var quotedUser="(\"[^\"]*\")";
943
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
944
               var atom=validChars + '+';
945
               var word="(" + atom + "|" + quotedUser + ")";
946
               var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
947
               var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
948
               var matchArray=emailStr.match(emailPat);
949
               if (matchArray == null) {
950
                   return false;
951
               }
952
               var user=matchArray[1];
953
               var domain=matchArray[2];
954
               if (user.match(userPat) == null) {
955
                   return false;
956
               }
957
               var IPArray = domain.match(ipDomainPat);
958
               if (IPArray != null) {
959
                   for (var i = 1; i <= 4; i++) {
960
                      if (IPArray[i] > 255) {
961
                         return false;
962
                      }
963
                   }
964
                   return true;
965
               }
966
               var domainArray=domain.match(domainPat);
967
               if (domainArray == null) {
968
                   return false;
969
               }
970
               var atomPat=new RegExp(atom,"g");
971
               var domArr=domain.match(atomPat);
972
               var len=domArr.length;
973
               if ((domArr[domArr.length-1].length < 2) ||
974
                   (domArr[domArr.length-1].length > 3)) {
975
                   return false;
976
               }
977
               if (len < 2) {
978
                   return false;
979
               }
980
               return true;
981
            }]]>
982
         </javascript>
983
984
      </validator>
985
986
   </global>
987
988
</form-validation>