You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by ws...@apache.org on 2005/10/03 06:59:53 UTC
svn commit: r293241 - in /struts/shale/trunk/use-cases: ./
src/systest/org/apache/shale/usecases/systest/
src/test/org/apache/shale/usecases/locale/
src/test/org/apache/shale/usecases/lookup/
src/test/org/apache/shale/usecases/remote/ src/test/org/apac...
Author: wsmoak
Date: Sun Oct 2 21:59:39 2005
New Revision: 293241
URL: http://svn.apache.org/viewcvs?rev=293241&view=rev
Log:
Added missing svn props, fixed line endings.
Modified:
struts/shale/trunk/use-cases/build.xml (contents, props changed)
struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/AbstractTestCase.java (props changed)
struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/JndiTestCase.java (props changed)
struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/SubviewTestCase.java (props changed)
struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/UseCasesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/locale/SelectTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListCategoriesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListLocalesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListCategoriesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListLocalesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListStateNamesTestCase.java (props changed)
struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/rolodex/RolodexTestCase.java (props changed)
struts/shale/trunk/use-cases/src/web/WEB-INF/applicationContext.xml (props changed)
struts/shale/trunk/use-cases/src/web/WEB-INF/daoContext.xml (props changed)
struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml (contents, props changed)
struts/shale/trunk/use-cases/src/web/WEB-INF/web.xml (props changed)
struts/shale/trunk/use-cases/src/web/rolodex/address.html (props changed)
struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml (contents, props changed)
struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html (contents, props changed)
struts/shale/trunk/use-cases/xdocs/navigation.xml (props changed)
Modified: struts/shale/trunk/use-cases/build.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/build.xml?rev=293241&r1=293240&r2=293241&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/build.xml (original)
+++ struts/shale/trunk/use-cases/build.xml Sun Oct 2 21:59:39 2005
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
- $Id: build.xml 54942 2004-10-16 22:39:25Z craigmcc $
+ $Id$
-->
Propchange: struts/shale/trunk/use-cases/build.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/build.xml
------------------------------------------------------------------------------
svn:keywords = author date id
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/AbstractTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/AbstractTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/JndiTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/JndiTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/SubviewTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/SubviewTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/UseCasesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/systest/org/apache/shale/usecases/systest/UseCasesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/locale/SelectTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/locale/SelectTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListCategoriesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListCategoriesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListLocalesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/lookup/ListLocalesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListCategoriesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListCategoriesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListLocalesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListLocalesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListStateNamesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/remote/ListStateNamesTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/rolodex/RolodexTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/test/org/apache/shale/usecases/rolodex/RolodexTestCase.java
------------------------------------------------------------------------------
svn:keywords = date author id rev
Propchange: struts/shale/trunk/use-cases/src/web/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/web/WEB-INF/daoContext.xml
------------------------------------------------------------------------------
svn:eol-style = native
Modified: struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml?rev=293241&r1=293240&r2=293241&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml (original)
+++ struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml Sun Oct 2 21:59:39 2005
@@ -1,896 +1,896 @@
-<!DOCTYPE form-validation PUBLIC
- "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
- "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
-<form-validation>
-
- <global>
-
- <validator name="required"
- classname="org.apache.shale.validator.CommonsValidator"
- method="isSupplied"
- methodParams="java.lang.String"
- msg="errors.required">
-
- <javascript><![CDATA[
- function validateRequired(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oRequired = new required();
- for (x in oRequired) {
- var field = form[oRequired[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea' ||
- field.type == 'file' ||
- field.type == 'select-one' ||
- field.type == 'radio' ||
- field.type == 'password') {
-
- var value = '';
- // get field's value
- if (field.type == "select-one") {
- var si = field.selectedIndex;
- if (si >= 0) {
- value = field.options[si].value;
- }
- } else {
- value = field.value;
- }
-
- if (trim(value).length == 0) {
-
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oRequired[x][1];
- isValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }
-
- // Trim whitespace from left and right sides of s.
- function trim(s) {
- return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
- }
-
- ]]>
- </javascript>
-
- </validator>
-
- <validator name="minlength"
- classname="org.apache.commons.validator.GenericValidator"
- method="minLength"
- methodParams="java.lang.String,int"
- depends=""
- msg="errors.minlength">
-
- <javascript><![CDATA[
- function validateMinLength(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oMinLength = new minlength();
- for (x in oMinLength) {
- var field = form[oMinLength[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea') {
-
- var iMin = parseInt(oMinLength[x][2]("minlength"));
- if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oMinLength[x][1];
- isValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="maxlength"
- classname="org.apache.commons.validator.GenericValidator"
- method="maxLength"
- methodParams="java.lang.String,int"
- depends=""
- msg="errors.maxlength">
-
- <javascript><![CDATA[
- function validateMaxLength(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oMaxLength = new maxlength();
- for (x in oMaxLength) {
- var field = form[oMaxLength[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea') {
-
- var iMax = parseInt(oMaxLength[x][2]("maxlength"));
- if (field.value.length > iMax) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oMaxLength[x][1];
- isValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="mask"
- classname="org.apache.commons.validator.GenericValidator"
- method="matchRegexp"
- methodParams="java.lang.String,java.lang.String"
- depends=""
- msg="errors.invalid">
-
- <javascript><![CDATA[
- function validateMask(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oMasked = new mask();
- for (x in oMasked) {
- var field = form[oMasked[x][0]];
-
- if ((field.type == 'text' ||
- field.type == 'textarea') &&
- (field.value.length > 0)) {
-
- if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oMasked[x][1];
- isValid = false;
- }
- }
- }
-
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }
-
- function matchPattern(value, mask) {
- return mask.exec(value);
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="byte"
- classname="org.apache.commons.validator.GenericValidator"
- method="isByte"
- methodParams="java.lang.String"
- depends=""
- msg="errors.byte"
- jsFunctionName="ByteValidations">
-
- <javascript><![CDATA[
- function validateByte(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oByte = new ByteValidations();
- for (x in oByte) {
- var field = form[oByte[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea' ||
- field.type == 'select-one' ||
- field.type == 'radio') {
-
- var value = '';
- // get field's value
- if (field.type == "select-one") {
- var si = field.selectedIndex;
- if (si >= 0) {
- value = field.options[si].value;
- }
- } else {
- value = field.value;
- }
-
- if (value.length > 0) {
- if (!isAllDigits(value)) {
- bValid = false;
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oByte[x][1];
-
- } else {
-
- var iValue = parseInt(value);
- if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oByte[x][1];
- bValid = false;
- }
- }
- }
-
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="short"
- classname="org.apache.commons.validator.GenericValidator"
- method="isShort"
- methodParams="java.lang.String"
- depends=""
- msg="errors.short"
- jsFunctionName="ShortValidations">
-
- <javascript><![CDATA[
- function validateShort(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oShort = new ShortValidations();
- for (x in oShort) {
- var field = form[oShort[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea' ||
- field.type == 'select-one' ||
- field.type == 'radio') {
-
- var value = '';
- // get field's value
- if (field.type == "select-one") {
- var si = field.selectedIndex;
- if (si >= 0) {
- value = field.options[si].value;
- }
- } else {
- value = field.value;
- }
-
- if (value.length > 0) {
- if (!isAllDigits(value)) {
- bValid = false;
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oShort[x][1];
-
- } else {
-
- var iValue = parseInt(value);
- if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oShort[x][1];
- bValid = false;
- }
- }
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="integer"
- classname="org.apache.commons.validator.GenericValidator"
- method="isInt"
- methodParams="java.lang.String"
- depends=""
- msg="errors.integer"
- jsFunctionName="IntegerValidations">
-
- <javascript><![CDATA[
- function validateInteger(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oInteger = new IntegerValidations();
- for (x in oInteger) {
- var field = form[oInteger[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea' ||
- field.type == 'select-one' ||
- field.type == 'radio') {
-
- var value = '';
- // get field's value
- if (field.type == "select-one") {
- var si = field.selectedIndex;
- if (si >= 0) {
- value = field.options[si].value;
- }
- } else {
- value = field.value;
- }
-
- if (value.length > 0) {
-
- if (!isAllDigits(value)) {
- bValid = false;
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oInteger[x][1];
-
- } else {
- var iValue = parseInt(value);
- if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oInteger[x][1];
- bValid = false;
- }
- }
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }
-
- function isAllDigits(argvalue) {
- argvalue = argvalue.toString();
- var validChars = "0123456789";
- var startFrom = 0;
- if (argvalue.substring(0, 2) == "0x") {
- validChars = "0123456789abcdefABCDEF";
- startFrom = 2;
- } else if (argvalue.charAt(0) == "0") {
- validChars = "01234567";
- startFrom = 1;
- } else if (argvalue.charAt(0) == "-") {
- startFrom = 1;
- }
-
- for (var n = startFrom; n < argvalue.length; n++) {
- if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
- }
- return true;
- }]]>
- </javascript>
-
- </validator>
-
- <validator name="float"
- classname="org.apache.commons.validator.GenericValidator"
- method="isDouble"
- methodParams="double"
- depends=""
- msg="errors.float"
- jsFunctionName="FloatValidations">
-
- <javascript><![CDATA[
- function validateFloat(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oFloat = new FloatValidations();
- for (x in oFloat) {
- var field = form[oFloat[x][0]];
-
- if (field.type == 'text' ||
- field.type == 'textarea' ||
- field.type == 'select-one' ||
- field.type == 'radio') {
-
- var value = '';
- // get field's value
- if (field.type == "select-one") {
- var si = field.selectedIndex;
- if (si >= 0) {
- value = field.options[si].value;
- }
- } else {
- value = field.value;
- }
-
- if (value.length > 0) {
- // remove '.' before checking digits
- var tempArray = value.split('.');
- var joinedString= tempArray.join('');
-
- if (!isAllDigits(joinedString)) {
- bValid = false;
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oFloat[x][1];
-
- } else {
- var iValue = parseFloat(value);
- if (isNaN(iValue)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oFloat[x][1];
- bValid = false;
- }
- }
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }]]>
- </javascript>
-
- </validator>
-
- <validator name="date"
- classname="org.apache.shale.validator.CommonsValidator"
- method="isDate"
- methodParams="java.lang.String,java.lang.String"
- depends=""
- msg="errors.date"
- jsFunctionName="DateValidations">
-
- <javascript><![CDATA[
- function validateDate(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oDate = new DateValidations();
- for (x in oDate) {
- var value = form[oDate[x][0]].value;
- var datePattern = oDate[x][2]("datePatternStrict");
- if ((form[oDate[x][0]].type == 'text' ||
- form[oDate[x][0]].type == 'textarea') &&
- (value.length > 0) &&
- (datePattern.length > 0)) {
- var MONTH = "MM";
- var DAY = "dd";
- var YEAR = "yyyy";
- var orderMonth = datePattern.indexOf(MONTH);
- var orderDay = datePattern.indexOf(DAY);
- var orderYear = datePattern.indexOf(YEAR);
- if ((orderDay < orderYear && orderDay > orderMonth)) {
- var iDelim1 = orderMonth + MONTH.length;
- var iDelim2 = orderDay + DAY.length;
- var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
- var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
- if (iDelim1 == orderDay && iDelim2 == orderYear) {
- dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
- } else if (iDelim1 == orderDay) {
- dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
- } else if (iDelim2 == orderYear) {
- dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
- } else {
- dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
- }
- var matched = dateRegexp.exec(value);
- if(matched != null) {
- if (!isValidDate(matched[2], matched[1], matched[3])) {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
- var iDelim1 = orderDay + DAY.length;
- var iDelim2 = orderMonth + MONTH.length;
- var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
- var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
- if (iDelim1 == orderMonth && iDelim2 == orderYear) {
- dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
- } else if (iDelim1 == orderMonth) {
- dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
- } else if (iDelim2 == orderYear) {
- dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
- } else {
- dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
- }
- var matched = dateRegexp.exec(value);
- if(matched != null) {
- if (!isValidDate(matched[1], matched[2], matched[3])) {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
- var iDelim1 = orderYear + YEAR.length;
- var iDelim2 = orderMonth + MONTH.length;
- var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
- var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
- if (iDelim1 == orderMonth && iDelim2 == orderDay) {
- dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
- } else if (iDelim1 == orderMonth) {
- dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
- } else if (iDelim2 == orderDay) {
- dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
- } else {
- dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
- }
- var matched = dateRegexp.exec(value);
- if(matched != null) {
- if (!isValidDate(matched[3], matched[2], matched[1])) {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- } else {
- if (i == 0) {
- focusField = form[oDate[x][0]];
- }
- fields[i++] = oDate[x][1];
- bValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }
-
- function isValidDate(day, month, year) {
- if (month < 1 || month > 12) {
- return false;
- }
- if (day < 1 || day > 31) {
- return false;
- }
- if ((month == 4 || month == 6 || month == 9 || month == 11) &&
- (day == 31)) {
- return false;
- }
- if (month == 2) {
- var leap = (year % 4 == 0 &&
- (year % 100 != 0 || year % 400 == 0));
- if (day>29 || (day == 29 && !leap)) {
- return false;
- }
- }
- return true;
- }]]>
- </javascript>
-
- </validator>
-
- <validator name="intRange"
- classname="org.apache.commons.validator.GenericValidator"
- method="isInRange"
- methodParams="int,int,int"
- depends="integer"
- msg="errors.range">
-
- <javascript><![CDATA[
- function validateIntRange(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oRange = new intRange();
- for (x in oRange) {
- var field = form[oRange[x][0]];
-
- if ((field.type == 'text' ||
- field.type == 'textarea') &&
- (field.value.length > 0)) {
-
- var iMin = parseInt(oRange[x][2]("min"));
- var iMax = parseInt(oRange[x][2]("max"));
- var iValue = parseInt(field.value);
- if (!(iValue >= iMin && iValue <= iMax)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oRange[x][1];
- isValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }]]>
- </javascript>
-
- </validator>
-
- <validator name="floatRange"
- classname="org.apache.commons.validator.GenericValidator"
- method="isInRange"
- methodParams="double,double,double"
- depends="float"
- msg="errors.range">
-
- <javascript><![CDATA[
- function validateFloatRange(form) {
- var isValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oRange = new floatRange();
- for (x in oRange) {
- var field = form[oRange[x][0]];
-
- if ((field.type == 'text' ||
- field.type == 'textarea') &&
- (field.value.length > 0)) {
-
- var fMin = parseFloat(oRange[x][2]("min"));
- var fMax = parseFloat(oRange[x][2]("max"));
- var fValue = parseFloat(field.value);
- if (!(fValue >= fMin && fValue <= fMax)) {
- if (i == 0) {
- focusField = field;
- }
- fields[i++] = oRange[x][1];
- isValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return isValid;
- }]]>
- </javascript>
-
- </validator>
-
- <validator name="creditCard"
- classname="org.apache.commons.validator.GenericValidator"
- method="isCreditCard"
- methodParams="java.lang.String"
- depends=""
- msg="errors.creditcard">
-
- <javascript><![CDATA[
- function validateCreditCard(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oCreditCard = new creditCard();
- for (x in oCreditCard) {
- if ((form[oCreditCard[x][0]].type == 'text' ||
- form[oCreditCard[x][0]].type == 'textarea') &&
- (form[oCreditCard[x][0]].value.length > 0)) {
- if (!luhnCheck(form[oCreditCard[x][0]].value)) {
- if (i == 0) {
- focusField = form[oCreditCard[x][0]];
- }
- fields[i++] = oCreditCard[x][1];
- bValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }
-
- /**
- * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
- */
- function luhnCheck(cardNumber) {
- if (isLuhnNum(cardNumber)) {
- var no_digit = cardNumber.length;
- var oddoeven = no_digit & 1;
- var sum = 0;
- for (var count = 0; count < no_digit; count++) {
- var digit = parseInt(cardNumber.charAt(count));
- if (!((count & 1) ^ oddoeven)) {
- digit *= 2;
- if (digit > 9) digit -= 9;
- };
- sum += digit;
- };
- if (sum == 0) return false;
- if (sum % 10 == 0) return true;
- };
- return false;
- }
-
- function isLuhnNum(argvalue) {
- argvalue = argvalue.toString();
- if (argvalue.length == 0) {
- return false;
- }
- for (var n = 0; n < argvalue.length; n++) {
- if ((argvalue.substring(n, n+1) < "0") ||
- (argvalue.substring(n,n+1) > "9")) {
- return false;
- }
- }
- return true;
- }]]>
- </javascript>
-
- </validator>
-
-
- <validator name="email"
- classname="org.apache.commons.validator.GenericValidator"
- method="isEmail"
- methodParams="java.lang.String"
- depends=""
- msg="errors.email">
-
- <javascript><![CDATA[
- function validateEmail(form) {
- var bValid = true;
- var focusField = null;
- var i = 0;
- var fields = new Array();
- oEmail = new email();
- for (x in oEmail) {
- if ((form[oEmail[x][0]].type == 'text' ||
- form[oEmail[x][0]].type == 'textarea') &&
- (form[oEmail[x][0]].value.length > 0)) {
- if (!checkEmail(form[oEmail[x][0]].value)) {
- if (i == 0) {
- focusField = form[oEmail[x][0]];
- }
- fields[i++] = oEmail[x][1];
- bValid = false;
- }
- }
- }
- if (fields.length > 0) {
- focusField.focus();
- alert(fields.join('\n'));
- }
- return bValid;
- }
-
- /**
- * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
- * http://javascript.internet.com
- */
- function checkEmail(emailStr) {
- if (emailStr.length == 0) {
- return true;
- }
- var emailPat=/^(.+)@(.+)$/;
- var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
- var validChars="\[^\\s" + specialChars + "\]";
- var quotedUser="(\"[^\"]*\")";
- var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
- var atom=validChars + '+';
- var word="(" + atom + "|" + quotedUser + ")";
- var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
- var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
- var matchArray=emailStr.match(emailPat);
- if (matchArray == null) {
- return false;
- }
- var user=matchArray[1];
- var domain=matchArray[2];
- if (user.match(userPat) == null) {
- return false;
- }
- var IPArray = domain.match(ipDomainPat);
- if (IPArray != null) {
- for (var i = 1; i <= 4; i++) {
- if (IPArray[i] > 255) {
- return false;
- }
- }
- return true;
- }
- var domainArray=domain.match(domainPat);
- if (domainArray == null) {
- return false;
- }
- var atomPat=new RegExp(atom,"g");
- var domArr=domain.match(atomPat);
- var len=domArr.length;
- if ((domArr[domArr.length-1].length < 2) ||
- (domArr[domArr.length-1].length > 3)) {
- return false;
- }
- if (len < 2) {
- return false;
- }
- return true;
- }]]>
- </javascript>
-
- </validator>
-
- </global>
-
-</form-validation>
+<!DOCTYPE form-validation PUBLIC
+ "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
+ "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
+<form-validation>
+
+ <global>
+
+ <validator name="required"
+ classname="org.apache.shale.validator.CommonsValidator"
+ method="isSupplied"
+ methodParams="java.lang.String"
+ msg="errors.required">
+
+ <javascript><![CDATA[
+ function validateRequired(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oRequired = new required();
+ for (x in oRequired) {
+ var field = form[oRequired[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea' ||
+ field.type == 'file' ||
+ field.type == 'select-one' ||
+ field.type == 'radio' ||
+ field.type == 'password') {
+
+ var value = '';
+ // get field's value
+ if (field.type == "select-one") {
+ var si = field.selectedIndex;
+ if (si >= 0) {
+ value = field.options[si].value;
+ }
+ } else {
+ value = field.value;
+ }
+
+ if (trim(value).length == 0) {
+
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oRequired[x][1];
+ isValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }
+
+ // Trim whitespace from left and right sides of s.
+ function trim(s) {
+ return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
+ }
+
+ ]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="minlength"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="minLength"
+ methodParams="java.lang.String,int"
+ depends=""
+ msg="errors.minlength">
+
+ <javascript><![CDATA[
+ function validateMinLength(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oMinLength = new minlength();
+ for (x in oMinLength) {
+ var field = form[oMinLength[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea') {
+
+ var iMin = parseInt(oMinLength[x][2]("minlength"));
+ if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oMinLength[x][1];
+ isValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="maxlength"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="maxLength"
+ methodParams="java.lang.String,int"
+ depends=""
+ msg="errors.maxlength">
+
+ <javascript><![CDATA[
+ function validateMaxLength(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oMaxLength = new maxlength();
+ for (x in oMaxLength) {
+ var field = form[oMaxLength[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea') {
+
+ var iMax = parseInt(oMaxLength[x][2]("maxlength"));
+ if (field.value.length > iMax) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oMaxLength[x][1];
+ isValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="mask"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="matchRegexp"
+ methodParams="java.lang.String,java.lang.String"
+ depends=""
+ msg="errors.invalid">
+
+ <javascript><![CDATA[
+ function validateMask(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oMasked = new mask();
+ for (x in oMasked) {
+ var field = form[oMasked[x][0]];
+
+ if ((field.type == 'text' ||
+ field.type == 'textarea') &&
+ (field.value.length > 0)) {
+
+ if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oMasked[x][1];
+ isValid = false;
+ }
+ }
+ }
+
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }
+
+ function matchPattern(value, mask) {
+ return mask.exec(value);
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="byte"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isByte"
+ methodParams="java.lang.String"
+ depends=""
+ msg="errors.byte"
+ jsFunctionName="ByteValidations">
+
+ <javascript><![CDATA[
+ function validateByte(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oByte = new ByteValidations();
+ for (x in oByte) {
+ var field = form[oByte[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea' ||
+ field.type == 'select-one' ||
+ field.type == 'radio') {
+
+ var value = '';
+ // get field's value
+ if (field.type == "select-one") {
+ var si = field.selectedIndex;
+ if (si >= 0) {
+ value = field.options[si].value;
+ }
+ } else {
+ value = field.value;
+ }
+
+ if (value.length > 0) {
+ if (!isAllDigits(value)) {
+ bValid = false;
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oByte[x][1];
+
+ } else {
+
+ var iValue = parseInt(value);
+ if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oByte[x][1];
+ bValid = false;
+ }
+ }
+ }
+
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="short"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isShort"
+ methodParams="java.lang.String"
+ depends=""
+ msg="errors.short"
+ jsFunctionName="ShortValidations">
+
+ <javascript><![CDATA[
+ function validateShort(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oShort = new ShortValidations();
+ for (x in oShort) {
+ var field = form[oShort[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea' ||
+ field.type == 'select-one' ||
+ field.type == 'radio') {
+
+ var value = '';
+ // get field's value
+ if (field.type == "select-one") {
+ var si = field.selectedIndex;
+ if (si >= 0) {
+ value = field.options[si].value;
+ }
+ } else {
+ value = field.value;
+ }
+
+ if (value.length > 0) {
+ if (!isAllDigits(value)) {
+ bValid = false;
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oShort[x][1];
+
+ } else {
+
+ var iValue = parseInt(value);
+ if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oShort[x][1];
+ bValid = false;
+ }
+ }
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="integer"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isInt"
+ methodParams="java.lang.String"
+ depends=""
+ msg="errors.integer"
+ jsFunctionName="IntegerValidations">
+
+ <javascript><![CDATA[
+ function validateInteger(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oInteger = new IntegerValidations();
+ for (x in oInteger) {
+ var field = form[oInteger[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea' ||
+ field.type == 'select-one' ||
+ field.type == 'radio') {
+
+ var value = '';
+ // get field's value
+ if (field.type == "select-one") {
+ var si = field.selectedIndex;
+ if (si >= 0) {
+ value = field.options[si].value;
+ }
+ } else {
+ value = field.value;
+ }
+
+ if (value.length > 0) {
+
+ if (!isAllDigits(value)) {
+ bValid = false;
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oInteger[x][1];
+
+ } else {
+ var iValue = parseInt(value);
+ if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oInteger[x][1];
+ bValid = false;
+ }
+ }
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }
+
+ function isAllDigits(argvalue) {
+ argvalue = argvalue.toString();
+ var validChars = "0123456789";
+ var startFrom = 0;
+ if (argvalue.substring(0, 2) == "0x") {
+ validChars = "0123456789abcdefABCDEF";
+ startFrom = 2;
+ } else if (argvalue.charAt(0) == "0") {
+ validChars = "01234567";
+ startFrom = 1;
+ } else if (argvalue.charAt(0) == "-") {
+ startFrom = 1;
+ }
+
+ for (var n = startFrom; n < argvalue.length; n++) {
+ if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
+ }
+ return true;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="float"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isDouble"
+ methodParams="double"
+ depends=""
+ msg="errors.float"
+ jsFunctionName="FloatValidations">
+
+ <javascript><![CDATA[
+ function validateFloat(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oFloat = new FloatValidations();
+ for (x in oFloat) {
+ var field = form[oFloat[x][0]];
+
+ if (field.type == 'text' ||
+ field.type == 'textarea' ||
+ field.type == 'select-one' ||
+ field.type == 'radio') {
+
+ var value = '';
+ // get field's value
+ if (field.type == "select-one") {
+ var si = field.selectedIndex;
+ if (si >= 0) {
+ value = field.options[si].value;
+ }
+ } else {
+ value = field.value;
+ }
+
+ if (value.length > 0) {
+ // remove '.' before checking digits
+ var tempArray = value.split('.');
+ var joinedString= tempArray.join('');
+
+ if (!isAllDigits(joinedString)) {
+ bValid = false;
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oFloat[x][1];
+
+ } else {
+ var iValue = parseFloat(value);
+ if (isNaN(iValue)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oFloat[x][1];
+ bValid = false;
+ }
+ }
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="date"
+ classname="org.apache.shale.validator.CommonsValidator"
+ method="isDate"
+ methodParams="java.lang.String,java.lang.String"
+ depends=""
+ msg="errors.date"
+ jsFunctionName="DateValidations">
+
+ <javascript><![CDATA[
+ function validateDate(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oDate = new DateValidations();
+ for (x in oDate) {
+ var value = form[oDate[x][0]].value;
+ var datePattern = oDate[x][2]("datePatternStrict");
+ if ((form[oDate[x][0]].type == 'text' ||
+ form[oDate[x][0]].type == 'textarea') &&
+ (value.length > 0) &&
+ (datePattern.length > 0)) {
+ var MONTH = "MM";
+ var DAY = "dd";
+ var YEAR = "yyyy";
+ var orderMonth = datePattern.indexOf(MONTH);
+ var orderDay = datePattern.indexOf(DAY);
+ var orderYear = datePattern.indexOf(YEAR);
+ if ((orderDay < orderYear && orderDay > orderMonth)) {
+ var iDelim1 = orderMonth + MONTH.length;
+ var iDelim2 = orderDay + DAY.length;
+ var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
+ var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
+ if (iDelim1 == orderDay && iDelim2 == orderYear) {
+ dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
+ } else if (iDelim1 == orderDay) {
+ dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
+ } else if (iDelim2 == orderYear) {
+ dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
+ } else {
+ dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
+ }
+ var matched = dateRegexp.exec(value);
+ if(matched != null) {
+ if (!isValidDate(matched[2], matched[1], matched[3])) {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
+ var iDelim1 = orderDay + DAY.length;
+ var iDelim2 = orderMonth + MONTH.length;
+ var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
+ var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
+ if (iDelim1 == orderMonth && iDelim2 == orderYear) {
+ dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
+ } else if (iDelim1 == orderMonth) {
+ dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
+ } else if (iDelim2 == orderYear) {
+ dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
+ } else {
+ dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
+ }
+ var matched = dateRegexp.exec(value);
+ if(matched != null) {
+ if (!isValidDate(matched[1], matched[2], matched[3])) {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
+ var iDelim1 = orderYear + YEAR.length;
+ var iDelim2 = orderMonth + MONTH.length;
+ var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
+ var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
+ if (iDelim1 == orderMonth && iDelim2 == orderDay) {
+ dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
+ } else if (iDelim1 == orderMonth) {
+ dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
+ } else if (iDelim2 == orderDay) {
+ dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
+ } else {
+ dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
+ }
+ var matched = dateRegexp.exec(value);
+ if(matched != null) {
+ if (!isValidDate(matched[3], matched[2], matched[1])) {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ } else {
+ if (i == 0) {
+ focusField = form[oDate[x][0]];
+ }
+ fields[i++] = oDate[x][1];
+ bValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }
+
+ function isValidDate(day, month, year) {
+ if (month < 1 || month > 12) {
+ return false;
+ }
+ if (day < 1 || day > 31) {
+ return false;
+ }
+ if ((month == 4 || month == 6 || month == 9 || month == 11) &&
+ (day == 31)) {
+ return false;
+ }
+ if (month == 2) {
+ var leap = (year % 4 == 0 &&
+ (year % 100 != 0 || year % 400 == 0));
+ if (day>29 || (day == 29 && !leap)) {
+ return false;
+ }
+ }
+ return true;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="intRange"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isInRange"
+ methodParams="int,int,int"
+ depends="integer"
+ msg="errors.range">
+
+ <javascript><![CDATA[
+ function validateIntRange(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oRange = new intRange();
+ for (x in oRange) {
+ var field = form[oRange[x][0]];
+
+ if ((field.type == 'text' ||
+ field.type == 'textarea') &&
+ (field.value.length > 0)) {
+
+ var iMin = parseInt(oRange[x][2]("min"));
+ var iMax = parseInt(oRange[x][2]("max"));
+ var iValue = parseInt(field.value);
+ if (!(iValue >= iMin && iValue <= iMax)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oRange[x][1];
+ isValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="floatRange"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isInRange"
+ methodParams="double,double,double"
+ depends="float"
+ msg="errors.range">
+
+ <javascript><![CDATA[
+ function validateFloatRange(form) {
+ var isValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oRange = new floatRange();
+ for (x in oRange) {
+ var field = form[oRange[x][0]];
+
+ if ((field.type == 'text' ||
+ field.type == 'textarea') &&
+ (field.value.length > 0)) {
+
+ var fMin = parseFloat(oRange[x][2]("min"));
+ var fMax = parseFloat(oRange[x][2]("max"));
+ var fValue = parseFloat(field.value);
+ if (!(fValue >= fMin && fValue <= fMax)) {
+ if (i == 0) {
+ focusField = field;
+ }
+ fields[i++] = oRange[x][1];
+ isValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return isValid;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ <validator name="creditCard"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isCreditCard"
+ methodParams="java.lang.String"
+ depends=""
+ msg="errors.creditcard">
+
+ <javascript><![CDATA[
+ function validateCreditCard(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oCreditCard = new creditCard();
+ for (x in oCreditCard) {
+ if ((form[oCreditCard[x][0]].type == 'text' ||
+ form[oCreditCard[x][0]].type == 'textarea') &&
+ (form[oCreditCard[x][0]].value.length > 0)) {
+ if (!luhnCheck(form[oCreditCard[x][0]].value)) {
+ if (i == 0) {
+ focusField = form[oCreditCard[x][0]];
+ }
+ fields[i++] = oCreditCard[x][1];
+ bValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }
+
+ /**
+ * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
+ */
+ function luhnCheck(cardNumber) {
+ if (isLuhnNum(cardNumber)) {
+ var no_digit = cardNumber.length;
+ var oddoeven = no_digit & 1;
+ var sum = 0;
+ for (var count = 0; count < no_digit; count++) {
+ var digit = parseInt(cardNumber.charAt(count));
+ if (!((count & 1) ^ oddoeven)) {
+ digit *= 2;
+ if (digit > 9) digit -= 9;
+ };
+ sum += digit;
+ };
+ if (sum == 0) return false;
+ if (sum % 10 == 0) return true;
+ };
+ return false;
+ }
+
+ function isLuhnNum(argvalue) {
+ argvalue = argvalue.toString();
+ if (argvalue.length == 0) {
+ return false;
+ }
+ for (var n = 0; n < argvalue.length; n++) {
+ if ((argvalue.substring(n, n+1) < "0") ||
+ (argvalue.substring(n,n+1) > "9")) {
+ return false;
+ }
+ }
+ return true;
+ }]]>
+ </javascript>
+
+ </validator>
+
+
+ <validator name="email"
+ classname="org.apache.commons.validator.GenericValidator"
+ method="isEmail"
+ methodParams="java.lang.String"
+ depends=""
+ msg="errors.email">
+
+ <javascript><![CDATA[
+ function validateEmail(form) {
+ var bValid = true;
+ var focusField = null;
+ var i = 0;
+ var fields = new Array();
+ oEmail = new email();
+ for (x in oEmail) {
+ if ((form[oEmail[x][0]].type == 'text' ||
+ form[oEmail[x][0]].type == 'textarea') &&
+ (form[oEmail[x][0]].value.length > 0)) {
+ if (!checkEmail(form[oEmail[x][0]].value)) {
+ if (i == 0) {
+ focusField = form[oEmail[x][0]];
+ }
+ fields[i++] = oEmail[x][1];
+ bValid = false;
+ }
+ }
+ }
+ if (fields.length > 0) {
+ focusField.focus();
+ alert(fields.join('\n'));
+ }
+ return bValid;
+ }
+
+ /**
+ * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
+ * http://javascript.internet.com
+ */
+ function checkEmail(emailStr) {
+ if (emailStr.length == 0) {
+ return true;
+ }
+ var emailPat=/^(.+)@(.+)$/;
+ var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
+ var validChars="\[^\\s" + specialChars + "\]";
+ var quotedUser="(\"[^\"]*\")";
+ var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
+ var atom=validChars + '+';
+ var word="(" + atom + "|" + quotedUser + ")";
+ var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
+ var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
+ var matchArray=emailStr.match(emailPat);
+ if (matchArray == null) {
+ return false;
+ }
+ var user=matchArray[1];
+ var domain=matchArray[2];
+ if (user.match(userPat) == null) {
+ return false;
+ }
+ var IPArray = domain.match(ipDomainPat);
+ if (IPArray != null) {
+ for (var i = 1; i <= 4; i++) {
+ if (IPArray[i] > 255) {
+ return false;
+ }
+ }
+ return true;
+ }
+ var domainArray=domain.match(domainPat);
+ if (domainArray == null) {
+ return false;
+ }
+ var atomPat=new RegExp(atom,"g");
+ var domArr=domain.match(atomPat);
+ var len=domArr.length;
+ if ((domArr[domArr.length-1].length < 2) ||
+ (domArr[domArr.length-1].length > 3)) {
+ return false;
+ }
+ if (len < 2) {
+ return false;
+ }
+ return true;
+ }]]>
+ </javascript>
+
+ </validator>
+
+ </global>
+
+</form-validation>
Propchange: struts/shale/trunk/use-cases/src/web/WEB-INF/validator-rules.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/web/WEB-INF/web.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/web/rolodex/address.html
------------------------------------------------------------------------------
svn:eol-style = native
Modified: struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml?rev=293241&r1=293240&r2=293241&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml (original)
+++ struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml Sun Oct 2 21:59:39 2005
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-
- Copyright 2004-2005 The Apache Software Foundation.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-
- <!DOCTYPE view PUBLIC
- "-//Apache Software Foundation//DTD Shale Clay View Configuration 1.0//EN"
- "http://struts.apache.org/dtds/shale-clay-config-1_0.dtd">
-
-<view>
- <component jsfid="/rolodex/rolodex.xml" extends="clay">
- <attributes>
- <set name="clayJsfid" value="/rolodex/xhrolodex.html" />
- <set name="managedBeanName" value="rolodex$xhrolodex" />
- </attributes>
- </component>
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+
+ Copyright 2004-2005 The Apache Software Foundation.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+ <!DOCTYPE view PUBLIC
+ "-//Apache Software Foundation//DTD Shale Clay View Configuration 1.0//EN"
+ "http://struts.apache.org/dtds/shale-clay-config-1_0.dtd">
+
+<view>
+ <component jsfid="/rolodex/rolodex.xml" extends="clay">
+ <attributes>
+ <set name="clayJsfid" value="/rolodex/xhrolodex.html" />
+ <set name="managedBeanName" value="rolodex$xhrolodex" />
+ </attributes>
+ </component>
</view>
Propchange: struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/src/web/rolodex/rolodex.xml
------------------------------------------------------------------------------
svn:keywords = author date id
Modified: struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html
URL: http://svn.apache.org/viewcvs/struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html?rev=293241&r1=293240&r2=293241&view=diff
==============================================================================
--- struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html (original)
+++ struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html Sun Oct 2 21:59:39 2005
@@ -1,10 +1,10 @@
-<html>
-<head><title>View Rolodex Example Source ("#{param['url']})</title>
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-</head>
-<body>
-<h1>#{param['url']}</h1><a value="usecases.faces">Back</a>
-<hr><br>
-<pre><span jsfid="clayImport" url="#{param['url']}" escapeXml="true"/></pre>
-</body>
-</html>
+<html>
+<head><title>View Rolodex Example Source ("#{param['url']})</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+</head>
+<body>
+<h1>#{param['url']}</h1><a value="usecases.faces">Back</a>
+<hr><br>
+<pre><span jsfid="clayImport" url="#{param['url']}" escapeXml="true"/></pre>
+</body>
+</html>
Propchange: struts/shale/trunk/use-cases/src/web/rolodex/viewsource.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/xdocs/navigation.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: struts/shale/trunk/use-cases/xdocs/navigation.xml
------------------------------------------------------------------------------
svn:keywords = author date id
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org