Hello,
I got a web.xml parse error aftering adding
this to web.xml:
<filter>
<filter-name>Set Character Encoding</filter-name> <filter-class>caps.SetCharacterEncodingFilter</filter-class> <init-param><param-name>encoding</param-name><param-value>Big5</param-value></init-param> </filter> <filter-mapping>
<filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Tried to changed to this (found in
TOMCAT_HOME/conf/web.xml) but still not work out:
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> Is it a bug? Attached pls find all the xml
of my application.
Thanks,
Finlay Li
|
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<!-- This is a blank Struts configuration file with an example welcome action/page and other commented sample elements. Tiles and the Struts Validator are configured using the factory defaults and are ready-to-use. NOTE: If you have a generator tool to create the corresponding Java classes for you, you could include the details in the "form-bean" declarations. Otherwise, you would only define the "form-bean" element itself, with the corresponding "name" and "type" attributes, as shown here. --> <struts-config> <!-- ==================================== Data Source Configuration --> <!-- <data-sources> <data-source> <set-property property="autoCommit" value="false"/> <set-property property="description" value="Example Data Source Configuration"/> <set-property property="driverClass" value="org.postgresql.Driver"/> <set-property property="maxCount" value="4"/> <set-property property="minCount" value="2"/> <set-property property="password" value="mypassword"/> <set-property property="url" value="jdbc:postgresql://localhost/mydatabase"/> <set-property property="user" value="myusername"/> </data-source> </data-sources> --> <!-- ======================================== Form Bean Definitions --> <form-beans> <!-- sample form bean descriptor for an ActionForm <form-bean name="inputForm" type="app.InputForm"/> end sample --> <form-bean name="loginForm" type="caps.LoginForm"/> <form-bean name="userForm" type="caps.UserForm"/> <!-- sample form bean descriptor for a DynaActionForm <form-bean name="logonForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="username" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> end sample --> </form-beans> <!-- ================================= Global Exception Definitions --> <global-exceptions> <!-- sample exception handler <exception key="expired.password" type="app.ExpiredPasswordException" path="/changePassword.jsp"/> end sample --> </global-exceptions> <!-- =================================== Global Forward Definitions --> <global-forwards> <!-- Default forward to "Welcome" action --> <!-- Demonstrates using index.jsp to forward --> <forward name="welcome" path="/Welcome.do"/> </global-forwards> <!-- =================================== Action Mapping Definitions --> <action-mappings> <!-- Default "Welcome" action --> <!-- Forwards to Welcome.jsp --> <action path="/Login" type="caps.LoginAction" name="loginForm" > <forward name="success" path="/welcome.jsp?src=b"/> <forward name="failure" path="/errorpage.jsp"/> </action> <action path="/User" type="caps.UserAction" name="userForm" > <forward name="add_OK" path="/adduser.jsp"/> <forward name="upd_OK" path="/userlist.jsp"/> <forward name="pswd_OK" path="/changepswd.jsp?upd=OK"/> <forward name="failure" path="/errorpage.jsp"/> </action> <!-- sample input and input submit actions <action path="/Input" type="org.apache.struts.actions.ForwardAction" parameter="/pages/Input.jsp"/> <action path="/InputSubmit" type="app.InputAction" name="inputForm" scope="request" validate="true" input="/pages/Input.jsp"/> end samples --> </action-mappings> <!-- ===================================== Controller Configuration --> <controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/> <!-- ================================ Message Resources Definitions --> <message-resources parameter="resources.application"/> <!-- ======================================= Plug Ins Configuration --> <!-- ========== Tiles plugin =================== --> <!-- This plugin initialize Tiles definition factory. This later can takes some parameters explained here after. The plugin first read parameters from web.xml, then overload them with parameters defined here. All parameters are optional. The plugin should be declared in each struts-config file. - definitions-config: (optional) Specify configuration file names. There can be several comma separated file names (default: ?? ) - moduleAware: (optional - struts1.1) Specify if the Tiles definition factory is module aware. If true (default), there will be one factory for each Struts module. If false, there will be one common factory for all module. In this later case, it is still needed to declare one plugin per module. The factory will be initialized with parameters found in the first initialized plugin (generally the one associated with the default module). true : One factory per module. (default) false : one single shared factory for all modules - definitions-parser-validate: (optional) Specify if xml parser should validate the Tiles configuration file. true : validate. DTD should be specified in file header. (default) false : no validation Paths found in Tiles definitions are relative to the main context. --> <!-- comment following if struts1.0.x --> <plug-in className="org.apache.struts.tiles.TilesPlugin" > <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" /> <set-property property="moduleAware" value="true" /> <set-property property="definitions-parser-validate" value="true" /> </plug-in> <!-- end comment if struts1.0.x --> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/> </plug-in> </struts-config>
<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd"> <!-- This is a blank Tiles definition file with a commented example. --> <tiles-definitions> <!-- sample tiles definitions <definition name=".mainLayout" path="/common/layouts/classicLayout.jsp"> <put name="title" value="Sample Page Title" /> <put name="header" value="/common/header.jsp" /> <put name="menu" value=".mainMenu" /> <put name="footer" value="/common/footer.jsp" /> <put name="body" value=".portal.body" /> </definition> <definition name=".mainMenu" path="/common/layouts/vboxLayout.jsp" > <putList name="list" > <add value=".menu.links" /> <add value=".menu.taglib.references" /> <add value=".menu.printer.friendly" /> <add value=".menu.old.documents" /> </putList> </definition> <definition name="aPage" extends=".mainLayout"> <put name="title" value="Another Title" /> <put name="body" value=".aPage.body" /> </definition> end samples --> <definition name="${YOUR_DEFINITION_HERE}"> </definition> </tiles-definitions>
<?xml version="1.0" encoding="ISO-8859-1" ?> <!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> <!-- This is a blank Validator form file with a commented examples. --> <global> <!-- An example global constant <constant> <constant-name>postalCode</constant-name> <constant-value>^\d{5}\d*$</constant-value> </constant> end example--> </global> <formset> <!-- An example form <form name="logonForm"> <field property="username" depends="required"> <arg0 key="logonForm.username"/> </field> <field property="password" depends="required,mask"> <arg0 key="logonForm.password"/> <var> <var-name>mask</var-name> <var-value>^[0-9a-zA-Z]*$</var-value> </var> </field> </form> end example form --> </formset> <!-- An example formset for another locale <formset language="fr"> <constant> <constant-name>postalCode</constant-name> <constant-value>^[0-9a-zA-Z]*$</constant-value> </constant> </formset> --> </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"> <!-- This file contains the default Struts Validator pluggable validator definitions. It should be placed somewhere under /WEB-INF and referenced in the struts-config.xml under the plug-in element for the ValidatorPlugIn. <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> These are the default error messages associated with each validator defined in this file. They should be added to your projects ApplicationResources.properties file or you can associate new ones by modifying the pluggable validators msg attributes in this file. # Struts Validator Error Messages errors.required={0} is required. errors.minlength={0} can not be less than {1} characters. errors.maxlength={0} can not be greater than {1} characters. errors.invalid={0} is invalid. errors.byte={0} must be a byte. errors.short={0} must be a short. errors.integer={0} must be an integer. errors.long={0} must be a long. errors.float={0} must be a float. errors.double={0} must be a double. errors.date={0} is not a date. errors.range={0} is not in the range {1} through {2}. errors.creditcard={0} is an invalid credit card number. errors.email={0} is an invalid e-mail address. --> <form-validation> <global> <validator name="required" classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" msg="errors.required"> <javascript><![CDATA[ function validateRequired(form) { var bValid = 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 (value == '') { if (i == 0) { focusField = field; } fields[i++] = oRequired[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="requiredif" classname="org.apache.struts.validator.FieldChecks" method="validateRequiredIf" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.required"> </validator> <validator name="minlength" classname="org.apache.struts.validator.FieldChecks" method="validateMinLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.minlength"> <javascript><![CDATA[ function validateMinLength(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oMinLength = new minlength(); for (x in oMinLength) { if (form[oMinLength[x][0]].type == 'text' || form[oMinLength[x][0]].type == 'textarea') { var iMin = parseInt(oMinLength[x][2]("minlength")); if (form[oMinLength[x][0]].value.length < iMin) { if (i == 0) { focusField = form[oMinLength[x][0]]; } fields[i++] = oMinLength[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="maxlength" classname="org.apache.struts.validator.FieldChecks" method="validateMaxLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.maxlength"> <javascript><![CDATA[ function validateMaxLength(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oMaxLength = new maxlength(); for (x in oMaxLength) { if (form[oMaxLength[x][0]].type == 'text' || form[oMaxLength[x][0]].type == 'textarea') { var iMax = parseInt(oMaxLength[x][2]("maxlength")); if (form[oMaxLength[x][0]].value.length > iMax) { if (i == 0) { focusField = form[oMaxLength[x][0]]; } fields[i++] = oMaxLength[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="mask" classname="org.apache.struts.validator.FieldChecks" method="validateMask" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.invalid"> <javascript><![CDATA[ function validateMask(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oMasked = new mask(); for (x in oMasked) { if ((form[oMasked[x][0]].type == 'text' || form[oMasked[x][0]].type == 'textarea' || form[oMasked[x][0]].type == 'password') && (form[oMasked[x][0]].value.length > 0)) { if (!matchPattern(form[oMasked[x][0]].value, oMasked[x][2]("mask"))) { if (i == 0) { focusField = form[oMasked[x][0]]; } fields[i++] = oMasked[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; } function matchPattern(value, mask) { var bMatched = mask.exec(value); if (!bMatched) { return false; } return true; }]]> </javascript> </validator> <validator name="byte" classname="org.apache.struts.validator.FieldChecks" method="validateByte" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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) { 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.struts.validator.FieldChecks" method="validateShort" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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) { 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.struts.validator.FieldChecks" method="validateInteger" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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; } 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; } for (var n = 0; n < argvalue.length; n++) { if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false; } return true; }]]> </javascript> </validator> <validator name="long" classname="org.apache.struts.validator.FieldChecks" method="validateLong" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.long"/> <validator name="float" classname="org.apache.struts.validator.FieldChecks" method="validateFloat" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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) { 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="double" classname="org.apache.struts.validator.FieldChecks" method="validateDouble" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="" msg="errors.double"/> <validator name="date" classname="org.apache.struts.validator.FieldChecks" method="validateDate" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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> <!-- range is deprecated use intRange instead --> <validator name="range" classname="org.apache.struts.validator.FieldChecks" method="validateIntRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="integer" msg="errors.range"> <javascript><![CDATA[ function validateRange(form) { return validateIntRange(form); }]]> </javascript> </validator> <validator name="intRange" classname="org.apache.struts.validator.FieldChecks" method="validateIntRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="integer" msg="errors.range"> <javascript><![CDATA[ function validateIntRange(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new intRange(); for (x in oRange) { if ((form[oRange[x][0]].type == 'text' || form[oRange[x][0]].type == 'textarea') && (form[oRange[x][0]].value.length > 0)) { var iMin = parseInt(oRange[x][2]("min")); var iMax = parseInt(oRange[x][2]("max")); var iValue = parseInt(form[oRange[x][0]].value); if (!(iValue >= iMin && iValue <= iMax)) { if (i == 0) { focusField = form[oRange[x][0]]; } fields[i++] = oRange[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="floatRange" classname="org.apache.struts.validator.FieldChecks" method="validateFloatRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" depends="float" msg="errors.range"> <javascript><![CDATA[ function validateFloatRange(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new floatRange(); for (x in oRange) { if ((form[oRange[x][0]].type == 'text' || form[oRange[x][0]].type == 'textarea') && (form[oRange[x][0]].value.length > 0)) { var fMin = parseFloat(oRange[x][2]("min")); var fMax = parseFloat(oRange[x][2]("max")); var fValue = parseFloat(form[oRange[x][0]].value); if (!(fValue >= fMin && fValue <= fMax)) { if (i == 0) { focusField = form[oRange[x][0]]; } fields[i++] = oRange[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="creditCard" classname="org.apache.struts.validator.FieldChecks" method="validateCreditCard" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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.struts.validator.FieldChecks" method="validateEmail" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest" 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 ([EMAIL PROTECTED]), * 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>
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <display-name>Web-based Training Service for CAPS</display-name> <description>Web-based Training Service for CAPS.</description> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>caps.SetCharacterEncodingFilter</filter-class> <init-param><param-name>encoding</param-name><param-value>Big5</param-value></init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Standard Action Servlet Configuration (with debugging) --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param> <init-param><param-name>debug</param-name><param-value>2</param-value></init-param> <init-param><param-name>detail</param-name><param-value>2</param-value></init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- CAPS Servlet Configuration --> <servlet> <servlet-name>cache</servlet-name> <servlet-class>caps.Cache</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet> <servlet-name>practice</servlet-name> <servlet-class>caps.PracticeAction</servlet-class> <load-on-startup>3</load-on-startup> </servlet> <!-- Tomcat Servlet Declaration Demo, "example" is the folder name under "WEB-INF/classes" --> <!-- "BasicServlet" is java class packaged under folder "example" --> <!-- <servlet> <servlet-name>TomcatSvDemo</servlet-name> <servlet-class>example.BasicServlet</servlet-class> </servlet> --> <!-- Standard Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- CAPS Servlet Mapping --> <servlet-mapping> <servlet-name>cache</servlet-name> <url-pattern>servlet/Cache</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>practice</servlet-name> <url-pattern>PracticeAction.do</url-pattern> </servlet-mapping> <!-- Tomcat Servlet Mapping Demo, "demo/BasicServlet" is the relative path to server.xml path="/caps" --> <!-- i.e. http://localhost:8080/caps/demo/BasicServlet.do --> <!-- Apache_Home/conf/httpd.conf is configured to let pass *.do, there suffix the servlet with ".do" --> <!-- i.e. http://localhost/caps/demo/BasicServlet.do will work also --> <!-- <servlet-mapping> <servlet-name>TomcatSvDemo</servlet-name> <url-pattern>demo/BasicServlet.do</url-pattern > </servlet-mapping> --> <!-- The Usual Welcome File List --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- Struts Tag Library Descriptors --> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> </taglib> <resource-ref> <res-ref-name>jdbc/caps</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]