You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(16) |
Sep
(10) |
Oct
(1) |
Nov
(2) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(148) |
Feb
(80) |
Mar
(41) |
Apr
(85) |
May
(247) |
Jun
(345) |
Jul
(237) |
Aug
(241) |
Sep
(439) |
Oct
(321) |
Nov
(413) |
Dec
(302) |
2004 |
Jan
(143) |
Feb
(147) |
Mar
(200) |
Apr
(107) |
May
(15) |
Jun
(36) |
Jul
(11) |
Aug
(1) |
Sep
(36) |
Oct
|
Nov
(6) |
Dec
|
2005 |
Jan
|
Feb
|
Mar
|
Apr
(115) |
May
(74) |
Jun
(215) |
Jul
(82) |
Aug
(47) |
Sep
(32) |
Oct
(8) |
Nov
(70) |
Dec
(24) |
2006 |
Jan
|
Feb
(1) |
Mar
(4) |
Apr
(2) |
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <mr...@us...> - 2003-01-08 05:04:40
|
Update of /cvsroot/struts/struts-resume/src In directory sc8-pr-cvs1:/tmp/cvs-serv16113/src Log Message: Directory /cvsroot/struts/struts-resume/src added to the repository |
From: <mr...@us...> - 2003-01-08 05:04:40
|
Update of /cvsroot/struts/struts-resume/test In directory sc8-pr-cvs1:/tmp/cvs-serv16113/test Log Message: Directory /cvsroot/struts/struts-resume/test added to the repository |
From: <mr...@us...> - 2003-01-08 05:04:40
|
Update of /cvsroot/struts/struts-resume/metadata In directory sc8-pr-cvs1:/tmp/cvs-serv16113/metadata Log Message: Directory /cvsroot/struts/struts-resume/metadata added to the repository |
From: <th...@us...> - 2002-11-17 11:14:23
|
Update of /cvsroot/struts/sia In directory usw-pr-cvs1:/tmp/cvs-serv15858 Modified Files: errata.html Log Message: + Routine update. Index: errata.html =================================================================== RCS file: /cvsroot/struts/sia/errata.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** errata.html 7 Nov 2002 16:09:19 -0000 1.2 --- errata.html 17 Nov 2002 11:14:21 -0000 1.3 *************** *** 37,46 **** </blockquote> --> - <!-- ! The first code on page 19 has a number of ! obvious faults, including two unnecessary "this." references and six ! extraneous ";"s. ! --> <p> --- 37,62 ---- </blockquote> --> ! <p> ! <!-- Brendan --> ! <b>Section 1.3.3 (page 9, sixth paragraph)</b> ! </p> ! <p> ! The text reads ! </p> ! <blockquote> ! "... it will just create a new thread for each request." ! </blockquote> ! <p> ! but would better read: ! </p> ! <blockquote> ! "... it will just assign a new thread for each request." ! </blockquote> ! <p> ! In practice, threads are pooled, so the container would not ! actually create a brand-new thread for each request. ! </p> ! <hr noshade size="1" /> <p> *************** *** 92,96 **** --- 108,170 ---- } </code></pre></blockquote> + <hr noshade size="1" /> + + <p> + <!-- Tacs1 --> + <b>Section 1.4.3 (page 20)</b> + </p> + <p> + The test doesn't mention that the UserDirectory source code is available in the download. + The following should be added as the second paragraph of page 20: + </p> + <blockquote> + "We will also focus only on the <i>Struts</i> source files you need to create. + For example, the UserDirectory class is part of the application's business logic. + The Struts framework interacts with this class, + but the UserDirectory is <b>not</b> part of the Struts layer. + (You would need this class whether you used Struts or not.) + If you are interested, the source code for UserDirectory is provided in the + WEB-INF/classes folder of the register application." + </blockquote> + <hr noshade size="1" /> + + <p> + <!-- Brendan --> + <b>Section 1.4.4 (page 26)</b> + </p> + <p> + The first two code snippets both read + </p> + <blockquote> + type=" app.RegisterAction" + </blockquote> + <p> + when they should read: + </p> + <blockquote> + type="app.RegisterAction" + </blockquote> + <p> + (No leading space). + </p> + <hr noshade size="1" /> + <p> + <!-- Brendan --> + <b>Section 1.4.4 (page 26)</b> + </p> + <p> + The second code snippet reads + </p> + <blockquote> + type="RegisterForm" + </blockquote> + <p> + when it should read: + </p> + <blockquote> + type="app.RegisterForm" + </blockquote> + <hr noshade size="1" /> <p> *************** *** 117,120 **** --- 191,238 ---- </code></pre></blockquote> <hr noshade size="1" /> + + <p> + <!-- Ken --> + <b>Section 12.2 (page 372, last paragraph)</b> + </p> + <p> + The text reads + </p> + <blockquote> + "The validator-rules.xml has a <form> element .." + </blockquote> + <p> + but should read: + </p> + <blockquote> + "The validation.xml has a <form> element ..." + </blockquote> + <p> + Although either file can contain any of the validator elements, + the convention is to place the reusable validators in the + "validator-rules" file and your application-specific forms + in the "validations" file. + </p> + <hr noshade size="1" /> + + <p> + <!-- Ken --> + <b>Section 12.2 (page 373, fourth paragraph)</b> + </p> + <p> + The text reads + </p> + <blockquote> + "The ValidatorDynaForm class ..." + </blockquote> + <p> + but should read: + </p> + <blockquote> + "The DynaValidatorForm class ..." + </blockquote> + <hr noshade size="1" /> + + </body> </html> |
From: <th...@us...> - 2002-11-07 16:09:24
|
Update of /cvsroot/struts/sia In directory usw-pr-cvs1:/tmp/cvs-serv23939 Modified Files: errata.html Log Message: Routine update. Index: errata.html =================================================================== RCS file: /cvsroot/struts/sia/errata.html,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** errata.html 7 Nov 2002 14:20:12 -0000 1.1.1.1 --- errata.html 7 Nov 2002 16:09:19 -0000 1.2 *************** *** 38,47 **** --> <!-- ! Listing 1.1 (page 19) The first code on page 19 has a number of obvious faults, including two unnecessary "this." references and six extraneous ";"s. --> <p> <b>Section 3.4.17 (page 103)</b> </p> --- 38,99 ---- --> <!-- ! The first code on page 19 has a number of obvious faults, including two unnecessary "this." references and six extraneous ";"s. --> + + <p> + <!-- Micael --> + <b>Listing 1.1 (page 19)</b> + </p> + <p> + The listing contains unnecessary semi-colons and references to "this". + </p> + <blockquote><pre><code> + package app; + import org.apache.struts.action.*; + + public class RegisterForm extends ActionForm { + protected String username; + protected String password1; + protected String password2; + + public String getUsername () {return this.username;}; + public String getPassword1() {return this.password1;}; + public String getPassword2() {return this.password2;}; + + public void setUsername (String username) {this.username = username;}; + public void setPassword1(String password) {this.password1 = password;}; + public void setPassword2(String password) {this.password2 = password;}; + + } + </code></pre></blockquote> <p> + Might be better expressed as: + </p> + <blockquote><pre><code> + package app; + import org.apache.struts.action.*; + + public class RegisterForm extends ActionForm { + protected String username; + protected String password1; + protected String password2; + + public String getUsername () {return username;} + public String getPassword1() {return password1;} + public String getPassword2() {return password2;} + + public void setUsername (String username) {this.username = username;} + public void setPassword1(String password) {this.password1 = password;} + public void setPassword2(String password) {this.password2 = password;} + + } + </code></pre></blockquote> + + + <p> + <!-- Kurt A. Seiffert --> <b>Section 3.4.17 (page 103)</b> </p> |
From: <jmi...@us...> - 2002-10-22 03:32:49
|
Update of /cvsroot/struts/artimus In directory usw-pr-cvs1:/tmp/cvs-serv30323 Modified Files: index.jsp Log Message: No change, just testing commit rights Index: index.jsp =================================================================== RCS file: /cvsroot/struts/artimus/index.jsp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** index.jsp 14 Aug 2002 21:11:51 -0000 1.1.1.1 --- index.jsp 22 Oct 2002 03:32:46 -0000 1.2 *************** *** 10,11 **** --- 10,12 ---- <%@ taglib uri="/tags/struts-logic" prefix="logic" %> <logic:redirect forward="welcome"/> + \ No newline at end of file |
From: <th...@us...> - 2002-09-12 20:42:16
|
Update of /cvsroot/struts/artimus/WEB-INF/src In directory usw-pr-cvs1:/tmp/cvs-serv25313 Modified Files: status.txt build.xml Log Message: + Post beta 3. + Change to poolman adaptor. + Adjust build to use latest commons-scaffold and struts-scaffold packaging. + Form,Bean: Move default timestamp to Bean class (where it belongs). + ActionForm: Remove as obsolete. + message.jsp: Restore tags version. Index: status.txt =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/status.txt,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** status.txt 23 Aug 2002 18:50:21 -0000 1.4 --- status.txt 12 Sep 2002 20:42:13 -0000 1.5 *************** *** 89,92 **** --- 89,107 ---- + 12-SEP-02 + --------- + + Post beta 3. + + Change to poolman adaptor. + + Adjust build to use latest commons-scaffold and struts-scaffold packaging. + + Form,Bean: Move default timestamp to Bean class (where it belongs). + + ActionForm: Remove as obsolete. + + message.jsp: Restore tags version. + + < ... /> + + + Roll back to 07/02/2001 validator + + < ... /> + 23-AUG-02 --------- Index: build.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/build.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** build.xml 6 Sep 2002 20:45:21 -0000 1.4 --- build.xml 12 Sep 2002 20:42:13 -0000 1.5 *************** *** 7,12 **** <!-- Change this to compile against a different version --> ! <property name="compile.classpath" value="compile.classpath_1_0"/> ! <property name="dev.scaffold" value="commons-scaffold_1_0.jar"/> <!-- Local system paths --> --- 7,11 ---- <!-- Change this to compile against a different version --> ! <property name="compile.classpath" value="compile.classpath"/> <!-- Local system paths --> *************** *** 18,22 **** <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b1_3"/> <property name="project.source" value="src/java/org/apache/artimus"/> --- 17,21 ---- <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b3"/> <property name="project.source" value="src/java/org/apache/artimus"/> *************** *** 31,41 **** <!-- Build working classpath --> ! <path id="compile.classpath_1_0"> <pathelement path ="lib/lucene_1_2.jar"/> <pathelement path ="lib/poolman_2_0_4.jar"/> <pathelement path ="lib/commons-digester.jar"/> ! <pathelement path ="lib/commons-scaffold_1_0.jar"/> ! <pathelement path ="lib/struts_1_0_2.jar"/> ! <pathelement path ="lib/struts-scaffold_1_0.jar"/> <pathelement path ="lib/struts-validator_1_0.jar"/> <pathelement path ="classes"/> --- 30,40 ---- <!-- Build working classpath --> ! <path id="compile.classpath"> <pathelement path ="lib/lucene_1_2.jar"/> <pathelement path ="lib/poolman_2_0_4.jar"/> <pathelement path ="lib/commons-digester.jar"/> ! <pathelement path ="lib/commons-scaffold.jar"/> ! <pathelement path ="lib/struts.jar"/> ! <pathelement path ="lib/struts-scaffold.jar"/> <pathelement path ="lib/struts-validator_1_0.jar"/> <pathelement path ="classes"/> *************** *** 43,59 **** </path> - <!-- Build working classpath --> - <path id="compile.classpath_1_1"> - <pathelement path ="lib/lucene_1_2.jar"/> - <pathelement path ="lib/poolman_2_0_4.jar"/> - <pathelement path ="lib/commons-beanutils.jar"/> - <pathelement path ="lib/commons-digester.jar"/> - <pathelement path ="lib/commons-scaffold_1_1.jar"/> - <pathelement path ="lib/struts_20020707.jar"/> - <pathelement path ="lib/struts-scaffold_1_1.jar"/> - <pathelement path ="classes"/> - <pathelement path ="${classpath}"/> - </path> - <!-- Remove classes directory for clean build --> --- 42,45 ---- *************** *** 119,136 **** - <!-- Grab the latest development jars --> - <target name="dev"> - <copy todir="lib" includeEmptyDirs="no"> - <fileset dir="${distpath.project}"> - <patternset> - <include name="${dev.scaffold}"/> - </patternset> - </fileset> - </copy> - </target> - - <!-- Normal build of application --> ! <target name="compile" depends="prepare,conf,pages,resources,dev"> <copy file="../LICENSE" --- 105,110 ---- <!-- Normal build of application --> ! <target name="compile" depends="prepare,conf,pages,resources"> <copy file="../LICENSE" *************** *** 141,144 **** --- 115,122 ---- </javac> </target> + + + <!-- Clean build of application --> + <target name="clean.build" depends="clean,compile"/> |
From: <th...@us...> - 2002-09-12 20:41:36
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv25111 Removed Files: validators.xml.txt Log Message: Remove obsolete file. --- validators.xml.txt DELETED --- |
From: <th...@us...> - 2002-09-12 20:41:08
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv25006 Modified Files: web.xml Log Message: + Change to poolman adaptor. Index: web.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/web.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** web.xml 6 Sep 2002 20:28:45 -0000 1.2 --- web.xml 12 Sep 2002 20:41:05 -0000 1.3 *************** *** 17,38 **** <init-param> <param-name>adaptor</param-name> ! <param-value>org.apache.commons.scaffold.sql.ServletAdaptor</param-value> </init-param> <init-param> <param-name>adaptor.key</param-name> ! <param-value>org.apache.struts.action.DATA_SOURCE</param-value> </init-param> <!-- Alternate adaptors <init-param> <param-name>adaptor</param-name> ! <param-value>org.apache.commons.scaffold.sql.PoolmanAdaptor</param-value> </init-param> <init-param> <param-name>adaptor.key</param-name> ! <param-value>jdbc-artimus</param-value> </init-param> - // The base adaptor suddenly stopped working with Resin. - // Doesn't seem to be calling setKey() - but subclasses use same method. - // Others OK. <init-param> <param-name>adaptor</param-name> --- 17,35 ---- <init-param> <param-name>adaptor</param-name> ! <param-value>org.apache.commons.scaffold.sql.PoolmanAdaptor</param-value> </init-param> <init-param> <param-name>adaptor.key</param-name> ! <param-value>jdbc-artimus</param-value> </init-param> <!-- Alternate adaptors <init-param> <param-name>adaptor</param-name> ! <param-value>org.apache.commons.scaffold.sql.ServletAdaptor</param-value> </init-param> <init-param> <param-name>adaptor.key</param-name> ! <param-value>org.apache.struts.action.DATA_SOURCE</param-value> </init-param> <init-param> <param-name>adaptor</param-name> |
From: <th...@us...> - 2002-09-12 20:40:28
|
Update of /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/article In directory usw-pr-cvs1:/tmp/cvs-serv24814 Modified Files: Bean.java Log Message: + Form,Bean: Move default timestamp to Bean class (where it belongs). Index: Bean.java =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/article/Bean.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Bean.java 14 Aug 2002 21:11:57 -0000 1.1.1.1 --- Bean.java 12 Sep 2002 20:40:25 -0000 1.2 *************** *** 347,352 **** public void setContributedDisplay(String contributedDisplay) { ! if (contributedDisplay==null) ! this.contributed = null; else this.contributed = Timestamp.valueOf(contributedDisplay); --- 347,352 ---- public void setContributedDisplay(String contributedDisplay) { ! if (ConvertUtils.isBlank(contributedDisplay)) ! this.contributed = ConvertUtils.getTimestamp(); else this.contributed = Timestamp.valueOf(contributedDisplay); |
From: <th...@us...> - 2002-09-12 20:40:11
|
Update of /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/struts In directory usw-pr-cvs1:/tmp/cvs-serv24635 Modified Files: Form.java Log Message: + Form,Bean: Move default timestamp to Bean class (where it belongs). Index: Form.java =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/struts/Form.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Form.java 14 Aug 2002 21:12:00 -0000 1.1.1.1 --- Form.java 12 Sep 2002 20:40:08 -0000 1.2 *************** *** 226,231 **** * formatted for presentation. */ ! private String contributedDisplay = ! ConvertUtils.getTimestamp().toString(); --- 226,230 ---- * formatted for presentation. */ ! private String contributedDisplay = null; |
From: <th...@us...> - 2002-09-06 20:45:26
|
Update of /cvsroot/struts/artimus/WEB-INF/src In directory usw-pr-cvs1:/tmp/cvs-serv12867 Modified Files: build.xml Log Message: Update for latest beta release. Index: build.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/build.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** build.xml 26 Aug 2002 12:19:21 -0000 1.3 --- build.xml 6 Sep 2002 20:45:21 -0000 1.4 *************** *** 4,8 **** --> ! <project name="artimus" basedir="../" default="compile"> <!-- Change this to compile against a different version --> --- 4,8 ---- --> ! <project name="artimus" basedir="../" default="dist"> <!-- Change this to compile against a different version --> *************** *** 18,22 **** <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b1_2"/> <property name="project.source" value="src/java/org/apache/artimus"/> --- 18,22 ---- <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b1_3"/> <property name="project.source" value="src/java/org/apache/artimus"/> |
From: <th...@us...> - 2002-09-06 20:29:41
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv7424 Removed Files: validator-rules.xml Log Message: Update to use Validator 2002/07/02 (1.0) rather than the (proposed) 1.0.1 version --- validator-rules.xml DELETED --- |
From: <th...@us...> - 2002-09-06 20:29:13
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv7252 Added Files: validators.xml.txt Log Message: Update to use Validator 2002/07/02 (1.0) rather than the (proposed) 1.0.1 version --- NEW FILE: validators.xml.txt --- <form-validation> <global> <constant name="phone" value="^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$" /> <constant name="zip" value="^\d{5}\d*$" /> <validator name="required" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateRequired" 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) { if ((form[oRequired[x][0]].type == 'text' || form[oRequired[x][0]].type == 'textarea' || form[oRequired[x][0]].type == 'select' || form[oRequired[x][0]].type == 'radio' || form[oRequired[x][0]].type == 'password') && form[oRequired[x][0]].value == '') { if (i == 0) focusField = form[oRequired[x][0]]; fields[i++] = oRequired[x][1]; bValid = false; } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="mask" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateMask" depends="required" 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="com.wintecinc.struts.validation.StrutsValidator" method="validateByte" depends="required" msg="errors.byte"> <javascript><![CDATA[ function validateByte(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oByte = new byte(); for (x in oByte) { if ((form[oByte[x][0]].type == 'text' || form[oByte[x][0]].type == 'textarea' || form[oByte[x][0]].type == 'select' || form[oByte[x][0]].type == 'radio') && form[oByte[x][0]].value.length > 0) { var iValue = parseInt(form[oByte[x][0]].value); if (!iValue || !(iValue >= -128 && iValue <= 127)) { if (i == 0) focusField = form[oByte[x][0]]; 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="com.wintecinc.struts.validation.StrutsValidator" method="validateShort" depends="required" msg="errors.short"> <javascript><![CDATA[ function validateShort(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oShort = new short(); for (x in oShort) { if ((form[oShort[x][0]].type == 'text' || form[oShort[x][0]].type == 'textarea' || form[oShort[x][0]].type == 'select' || form[oShort[x][0]].type == 'radio') && form[oShort[x][0]].value.length > 0) { var iValue = parseInt(form[oShort[x][0]].value); if (!iValue || !(iValue >= -32768 && iValue <= 32767)) { if (i == 0) focusField = form[oShort[x][0]]; 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="com.wintecinc.struts.validation.StrutsValidator" method="validateInteger" depends="required" msg="errors.integer"> <javascript><![CDATA[ function validateInteger(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oInteger = new integer(); for (x in oInteger) { if ((form[oInteger[x][0]].type == 'text' || form[oInteger[x][0]].type == 'textarea' || form[oInteger[x][0]].type == 'select' || form[oInteger[x][0]].type == 'radio') && form[oInteger[x][0]].value.length > 0) { var iValue = parseInt(form[oInteger[x][0]].value); if (!iValue || !(iValue >= -2147483648 && iValue <= 2147483647)) { if (i == 0) focusField = form[oInteger[x][0]]; fields[i++] = oInteger[x][1]; bValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join('\n')); } return bValid; }]]> </javascript> </validator> <validator name="long" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateLong" depends="required" msg="errors.long" /> <validator name="float" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateFloat" depends="required" msg="errors.float"> <javascript><![CDATA[ function validateFloat(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oFloat = new float(); for (x in oFloat) { if ((form[oFloat[x][0]].type == 'text' || form[oFloat[x][0]].type == 'textarea' || form[oFloat[x][0]].type == 'select' || form[oFloat[x][0]].type == 'radio') && form[oFloat[x][0]].value.length > 0) { var iValue = parseFloat(form[oFloat[x][0]].value); if (!iValue) { if (i == 0) focusField = form[oFloat[x][0]]; 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="com.wintecinc.struts.validation.StrutsValidator" method="validateDouble" depends="required" msg="errors.double"/> <validator name="date" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateDate" depends="required" msg="errors.date"> <javascript><![CDATA[ function validateDate(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oDate = new date(); 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="range" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateRange" depends="required,integer" msg="errors.range"> <javascript><![CDATA[ function validateRange(form) { var bValid = true; var focusField = null; var i = 0; var fields = new Array(); oRange = new range(); 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="creditCard" classname="com.wintecinc.struts.validation.StrutsValidator" method="validateCreditCard" depends="required" 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="com.wintecinc.struts.validation.StrutsValidator" method="validateEmail" depends="required" 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 (sta...@ho...), * 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> |
From: <th...@us...> - 2002-09-06 20:28:48
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv7081 Modified Files: web.xml validation.xml struts-config.xml Log Message: Update to use Validator 2002/07/02 (1.0) rather than the (proposed) 1.0.1 version Index: web.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/web.xml,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** web.xml 14 Aug 2002 21:11:56 -0000 1.1.1.1 --- web.xml 6 Sep 2002 20:28:45 -0000 1.2 *************** *** 48,55 **** </servlet> ! <!-- Standard Validator 1.0 Configuration --> <servlet> <servlet-name>validator</servlet-name> ! <servlet-class>org.apache.struts.validator.ValidatorServlet</servlet-class> <init-param> <param-name>config</param-name> --- 48,55 ---- </servlet> ! <!-- Standard Validator 1.0 (2001/07/02) Configuration --> <servlet> <servlet-name>validator</servlet-name> ! <servlet-class>com.wintecinc.struts.action.ValidatorServlet</servlet-class> <init-param> <param-name>config</param-name> Index: validation.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/validation.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** validation.xml 26 Aug 2002 12:17:42 -0000 1.2 --- validation.xml 6 Sep 2002 20:28:45 -0000 1.3 *************** *** 1,9 **** <form-validation> <global> - <constant name="phone" value="^\(?(\d{3})\)?[-| ]?(\d{3})[-| ]?(\d{4})$" /> - <constant name="zip" value="^\d{5}\d*$" /> - <validator name="required" ! classname="org.apache.struts.validator.util.StrutsValidator" method="validateRequired" msg="errors.required"> --- 1,14 ---- + <!-- + @author David Winterfeldt + @author Ted Husted + @version $Revision$ $Date$ + @copyright Copyright (c) 2001 Apache Software Foundation + @license $URL http://www.apache.org/LICENSE + --> + <form-validation> <global> <validator name="required" ! classname="com.wintecinc.struts.validation.StrutsValidator" method="validateRequired" msg="errors.required"> *************** *** 36,616 **** </javascript> </validator> - - <validator name="mask" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateMask" - depends="required" - 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.util.StrutsValidator" - method="validateByte" - depends="required" - msg="errors.byte"> - <javascript><![CDATA[ - function validateByte(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oByte = new byte(); - - for (x in oByte) { - if ((form[oByte[x][0]].type == 'text' || form[oByte[x][0]].type == 'textarea' || form[oByte[x][0]].type == 'select' || form[oByte[x][0]].type == 'radio') && form[oByte[x][0]].value.length > 0) { - var iValue = parseInt(form[oByte[x][0]].value); - - if (!iValue || !(iValue >= -128 && iValue <= 127)) { - if (i == 0) - focusField = form[oByte[x][0]]; - - 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.util.StrutsValidator" - method="validateShort" - depends="required" - msg="errors.short"> - <javascript><![CDATA[ - function validateShort(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oShort = new short(); - - for (x in oShort) { - if ((form[oShort[x][0]].type == 'text' || form[oShort[x][0]].type == 'textarea' || form[oShort[x][0]].type == 'select' || form[oShort[x][0]].type == 'radio') && form[oShort[x][0]].value.length > 0) { - var iValue = parseInt(form[oShort[x][0]].value); - - if (!iValue || !(iValue >= -32768 && iValue <= 32767)) { - if (i == 0) - focusField = form[oShort[x][0]]; - - 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.util.StrutsValidator" - method="validateInteger" - depends="required" - msg="errors.integer"> - <javascript><![CDATA[ - function validateInteger(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oInteger = new integer(); - - for (x in oInteger) { - if ((form[oInteger[x][0]].type == 'text' || form[oInteger[x][0]].type == 'textarea' || form[oInteger[x][0]].type == 'select' || form[oInteger[x][0]].type == 'radio') && form[oInteger[x][0]].value.length > 0) { - var iValue = parseInt(form[oInteger[x][0]].value); - - if (!iValue || !(iValue >= -2147483648 && iValue <= 2147483647)) { - if (i == 0) - focusField = form[oInteger[x][0]]; - - fields[i++] = oInteger[x][1]; - - bValid = false; - } - } - } - - if (fields.length > 0) { - focusField.focus(); - alert(fields.join('\n')); - } - - return bValid; - }]]> - </javascript> - </validator> - - <validator name="long" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateLong" - depends="required" - msg="errors.long" - /> - <validator name="float" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateFloat" - depends="required" - msg="errors.float"> - <javascript><![CDATA[ - function validateFloat(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oFloat = new float(); - - for (x in oFloat) { - if ((form[oFloat[x][0]].type == 'text' || form[oFloat[x][0]].type == 'textarea' || form[oFloat[x][0]].type == 'select' || form[oFloat[x][0]].type == 'radio') && form[oFloat[x][0]].value.length > 0) { - var iValue = parseFloat(form[oFloat[x][0]].value); - - if (!iValue) { - if (i == 0) - focusField = form[oFloat[x][0]]; - - 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.util.StrutsValidator" - method="validateDouble" - depends="required" - msg="errors.double"/> - - <validator name="date" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateDate" - depends="required" - msg="errors.date"> - <javascript><![CDATA[ - function validateDate(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oDate = new date(); - - 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="range" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateRange" - depends="required,integer" - msg="errors.range"> - <javascript><![CDATA[ - function validateRange(form) { - var bValid = true; - var focusField = null; - var i = 0; - var fields = new Array(); - oRange = new range(); - - 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="creditCard" - classname="org.apache.struts.validator.util.StrutsValidator" - method="validateCreditCard" - depends="required" - 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.util.StrutsValidator" - method="validateEmail" - depends="required" - 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 (sta...@ho...), - * 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> ! <formset> <form name="articleForm"> --- 41,47 ---- </javascript> </validator> </global> ! <formset> <form name="articleForm"> Index: struts-config.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/struts-config.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** struts-config.xml 26 Aug 2002 12:17:42 -0000 1.2 --- struts-config.xml 6 Sep 2002 20:28:45 -0000 1.3 *************** *** 56,60 **** <form-bean name="articleForm" ! type="org.apache.artimus.article.struts.ArticleForm"/> </form-beans> --- 56,60 ---- <form-bean name="articleForm" ! type="org.apache.artimus.struts.Form"/> </form-beans> |
From: <th...@us...> - 2002-09-06 20:28:05
|
Update of /cvsroot/struts/artimus/WEB-INF/src/pages/article/content In directory usw-pr-cvs1:/tmp/cvs-serv6838 Modified Files: form.jsp Log Message: Update to use Validator 2002/07/02 (1.0) rather than the (proposed) 1.0.1 version Index: form.jsp =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/pages/article/content/form.jsp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** form.jsp 14 Aug 2002 21:12:01 -0000 1.1.1.1 --- form.jsp 6 Sep 2002 20:28:02 -0000 1.2 *************** *** 13,19 **** <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> ! <%-- @ taglib uri="/tags/struts-validator" prefix="validator" --%> ! <%-- html:form action="/admin/article/Store" onsubmit="return validateArticleForm(this);" --%> ! <html:form action="/admin/article/Store"> <TR> <TD class="label" nowrap>Title:</TD> --- 13,18 ---- <%@ taglib uri="/tags/struts-bean" prefix="bean" %> <%@ taglib uri="/tags/struts-logic" prefix="logic" %> ! <%@ taglib uri="/tags/struts-validator" prefix="validator" %> ! <html:form action="/admin/article/Store" onsubmit="return validateArticleForm(this);"> <TR> <TD class="label" nowrap>Title:</TD> *************** *** 30,38 **** <TD class="label" nowrap>Article:</TD> <TD class="input" colspan="2"> ! <!-- The Struts html:textarea tag does not support wrapping --> ! <!-- so we use this trick instead --> ! <textarea name="contentDisplayHtml" rows="12" cols="50" tabindex="2" wrap="soft"> ! <bean:write name="articleForm" property="contentDisplayHtml"/> ! </textarea> </TD> </TR> --- 29,42 ---- <TD class="label" nowrap>Article:</TD> <TD class="input" colspan="2"> ! <%-- ! The Struts html:textarea tag does not support wrapping (wrap=soft) ! We could use this trick instead: ! <textarea name="contentDisplayHtml" wrap="soft"> ! <bean:write name="articleForm" property="contentDisplayHtml"> ! </textarea> ! but then the Validator won't popup a Javascript message. ! So, pick your poison =:) ! --%> ! <html:textarea property="contentDisplayHtml" rows="12" cols="50" tabindex="2"/> </TD> </TR> *************** *** 66,72 **** <TD class="button" colspan="3"> <html:submit accesskey="S">SAVE</html:submit> ! <html:cancel accesskey="C">CANCEL</html:cancel> </TD> </TR> </html:form> ! <%-- validator:javascript formName="articleForm"/ --> --- 70,76 ---- <TD class="button" colspan="3"> <html:submit accesskey="S">SAVE</html:submit> ! <html:cancel accesskey="C" onclick="bCancel=true">CANCEL</html:cancel> </TD> </TR> </html:form> ! <validator:javascript formName="articleForm"/> |
From: <th...@us...> - 2002-08-26 12:19:25
|
Update of /cvsroot/struts/artimus/WEB-INF/src In directory usw-pr-cvs1:/tmp/cvs-serv23265 Modified Files: build.xml Log Message: + Update build file. Index: build.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/build.xml,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** build.xml 15 Aug 2002 18:02:01 -0000 1.2 --- build.xml 26 Aug 2002 12:19:21 -0000 1.3 *************** *** 4,8 **** --> ! <project name="artimus" basedir="../" default="project"> <!-- Change this to compile against a different version --> --- 4,8 ---- --> ! <project name="artimus" basedir="../" default="compile"> <!-- Change this to compile against a different version --> *************** *** 18,22 **** <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b1"/> <property name="project.source" value="src/java/org/apache/artimus"/> --- 18,22 ---- <property name="project.title" value="artimus"/> <property name="project.version" value="0.6"/> ! <property name="project.distname" value="artimus_1_0_b1_2"/> <property name="project.source" value="src/java/org/apache/artimus"/> |
From: <th...@us...> - 2002-08-26 12:18:25
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv22956 Added Files: poolman.xml Log Message: + Add optional poolman configuration file. --- NEW FILE: poolman.xml --- <?xml version="1.0" encoding="UTF-8"?> <poolman> <management-mode>local</management-mode> <!-- ========================================================== --> <!-- These entries are an example of JDBC Connection pooling. --> <!-- Many of the parameters are optional. Consult the --> <!-- UsersGuide.html doument and the poolman.xml.template file --> <!-- for guidance and element definitions. --> <!-- ========================================================== --> <datasource> <!-- ============================== --> <!-- Physical Connection Attributes --> <!-- ============================== --> <!-- Standard JDBC Driver info --> <dbname>jdbc/artimus</dbname> <jndiName>jndi-datasource</jndiName> <driver>org.gjt.mm.mysql.Driver</driver> <url>jdbc:mysql://localhost:3306/artimus</url> <username>root</username> <password></password> <minimumSize>0</minimumSize> <maximumSize>10</maximumSize> <connectionTimeout>600</connectionTimeout> <userTimeout>12</userTimeout> <shrinkBy>10</shrinkBy> <logFile>/var/applogs/poolman.log</logFile> <debugging>false</debugging> <!-- Query Cache Attributes--> <cacheEnabled>true</cacheEnabled> <cacheSize>20</cacheSize> <cacheRefreshInterval>120</cacheRefreshInterval> </datasource> <!-- DISABLED FOR PRODUCTION <admin-agent> <class>com.sun.jdmk.comm.HtmlAdaptorServer</class> <name>Adaptor:name=html</name> <maxClients>10</maxClients> <port>8082</port> </admin-agent> --> </poolman> |
From: <th...@us...> - 2002-08-26 12:17:45
|
Update of /cvsroot/struts/artimus/WEB-INF/src/conf In directory usw-pr-cvs1:/tmp/cvs-serv22614 Modified Files: validation.xml struts-config.xml Log Message: + Struts-config: Revise to load CreateResources as a ProcessAction. Index: validation.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/validation.xml,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** validation.xml 14 Aug 2002 21:11:53 -0000 1.1.1.1 --- validation.xml 26 Aug 2002 12:17:42 -0000 1.2 *************** *** 626,630 **** </field> <field ! property="content" depends="required"> <arg0 key="article.content.displayname"/> --- 626,630 ---- </field> <field ! property="contentDisplayHtml" depends="required"> <arg0 key="article.content.displayname"/> Index: struts-config.xml =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/conf/struts-config.xml,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** struts-config.xml 14 Aug 2002 21:11:52 -0000 1.1.1.1 --- struts-config.xml 26 Aug 2002 12:17:42 -0000 1.2 *************** *** 317,322 **** <action path="/admin/CreateResources" ! type="org.apache.artimus.CreateResources"/> ! <!-- Struts reload action (admin) --> --- 317,326 ---- <action path="/admin/CreateResources" ! type="org.apache.struts.scaffold.ProcessAction" ! parameter="org.apache.artimus.CreateResources"> ! <forward ! name="success" ! path="/do/find/Recent"/> ! </action> <!-- Struts reload action (admin) --> |
From: <th...@us...> - 2002-08-26 12:16:51
|
Update of /cvsroot/struts/artimus/WEB-INF/src/pages/article/content In directory usw-pr-cvs1:/tmp/cvs-serv22400 Modified Files: result.jsp Log Message: + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). Index: result.jsp =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/pages/article/content/result.jsp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** result.jsp 14 Aug 2002 21:12:01 -0000 1.1.1.1 --- result.jsp 26 Aug 2002 12:16:48 -0000 1.2 *************** *** 14,23 **** <TR class="message"> <TD align="center" colspan="3"> ! <bean:write name="RESULT" property="size"/> matches for ! <bean:write name="RESULT" property="legend"/> </TD> </TR> ! <logic:notEqual name="RESULT" property="size" value="0"> <TR class="subhead"> <TH> --- 14,23 ---- <TR class="message"> <TD align="center" colspan="3"> ! <bean:write name="LIST" property="size"/> matches for ! <bean:write name="LIST" property="legend"/> </TD> </TR> ! <logic:notEqual name="LIST" property="size" value="0"> <TR class="subhead"> <TH> *************** *** 33,37 **** <TR> <% int i = 0; %> ! <logic:iterate name="RESULT" property="iterator" id="row"> <% i++; if ( i % 2 == 0) { %> --- 33,37 ---- <TR> <% int i = 0; %> ! <logic:iterate name="LIST" property="iterator" id="row"> <% i++; if ( i % 2 == 0) { %> |
From: <th...@us...> - 2002-08-26 12:16:38
|
Update of /cvsroot/struts/artimus/WEB-INF/src/pages/article/content/mapped/article In directory usw-pr-cvs1:/tmp/cvs-serv22318 Modified Files: result.jsp Log Message: + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). Index: result.jsp =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/pages/article/content/mapped/article/result.jsp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** result.jsp 14 Aug 2002 21:12:01 -0000 1.1.1.1 --- result.jsp 26 Aug 2002 12:16:32 -0000 1.2 *************** *** 14,23 **** <TR class="message"> <TD align="center" colspan="3"> ! <bean:write name="RESULT" property="size"/> matches for ! <bean:write name="RESULT" property="legend"/> </TD> </TR> ! <logic:notEqual name="RESULT" property="size" value="0"> <TR class="subhead"> <TH> --- 14,23 ---- <TR class="message"> <TD align="center" colspan="3"> ! <bean:write name="LIST" property="size"/> matches for ! <bean:write name="LIST" property="legend"/> </TD> </TR> ! <logic:notEqual name="LIST" property="size" value="0"> <TR class="subhead"> <TH> *************** *** 33,37 **** <TR> <% int i = 0; %> ! <logic:iterate name="RESULT" property="iterator" id="row"> <% i++; if ( i % 2 == 0) { %> --- 33,37 ---- <TR> <% int i = 0; %> ! <logic:iterate name="LIST" property="iterator" id="row"> <% i++; if ( i % 2 == 0) { %> |
From: <th...@us...> - 2002-08-23 18:50:24
|
Update of /cvsroot/struts/artimus/WEB-INF/src In directory usw-pr-cvs1:/tmp/cvs-serv32167 Modified Files: status.txt Log Message: + release beta 1.0.1; resolve [#599222] + sql.properties: Restore welcome message. + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase + CreateResources: Revise to allow exceptions to be thrown and report actual errors. + Struts-config: Revise to load CreateResources as a ProcessAction. Index: status.txt =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/status.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** status.txt 23 Aug 2002 14:27:01 -0000 1.3 --- status.txt 23 Aug 2002 18:50:21 -0000 1.4 *************** *** 91,96 **** 23-AUG-02 --------- ! + release beta 1.1; resolve [#599222] + sql.properties: Restore welcome message. + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase --- 91,97 ---- 23-AUG-02 --------- ! + release beta 1.0.1; resolve [#599222] + sql.properties: Restore welcome message. + + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase |
From: <th...@us...> - 2002-08-23 14:27:04
|
Update of /cvsroot/struts/artimus/WEB-INF/src In directory usw-pr-cvs1:/tmp/cvs-serv5242 Modified Files: status.txt Log Message: + release beta 1.0.1; resolve [#599222] + sql.properties: Restore welcome message. + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase + CreateResources: Revise to allow exceptions to be thrown and report actual errors. + Struts-config: Revise to load CreateResources as a ProcessAction. Index: status.txt =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/status.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** status.txt 14 Aug 2002 22:05:42 -0000 1.2 --- status.txt 23 Aug 2002 14:27:01 -0000 1.3 *************** *** 89,92 **** --- 89,101 ---- + 23-AUG-02 + --------- + + release beta 1.1; resolve [#599222] + + sql.properties: Restore welcome message. + + content/result.jsp: Revise to use latest scaffold token for ResultList (LIST). + + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase + + CreateResources: Revise to allow exceptions to be thrown and report actual errors. + + Struts-config: Revise to load CreateResources as a ProcessAction. + 21-JUL-02 |
From: <th...@us...> - 2002-08-23 14:26:12
|
Update of /cvsroot/struts/artimus/WEB-INF/src/resources In directory usw-pr-cvs1:/tmp/cvs-serv4794 Modified Files: sql_article.properties application.properties Log Message: + keys.Access: Revise to extend latest version of scaffold.sql.AccessBase Index: sql_article.properties =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/resources/sql_article.properties,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sql_article.properties 14 Aug 2002 21:12:02 -0000 1.1.1.1 --- sql_article.properties 23 Aug 2002 14:26:09 -0000 1.2 *************** *** 15,18 **** --- 15,19 ---- article.key.first = INSERT INTO artimus_keys (name,next) VALUES ('artimus_article',101); article.insert = INSERT INTO artimus_article (contributed,contributor,creator,title,content,article) VALUES (?,?,?,?,?,?); + article.insert.welcome = INSERT INTO artimus_article (creator,title,content,article) VALUES ("artimus","Welcome to Artimus","This is a test article that you can delete after adding your own.",100); article.update = UPDATE artimus_article SET contributed=?,contributor=?,creator=?,title=?,content=? WHERE article=?; article.recycle = UPDATE artimus_article SET marked=1 WHERE article=?; Index: application.properties =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/resources/application.properties,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** application.properties 14 Aug 2002 21:12:01 -0000 1.1.1.1 --- application.properties 23 Aug 2002 14:26:09 -0000 1.2 *************** *** 37,41 **** data.record.deleted=Record {0} deleted. data.record.restored=Record {0} restored. ! # -- access -- process.missing.parameter=Missing parameter. # -- rss -- --- 37,42 ---- data.record.deleted=Record {0} deleted. data.record.restored=Record {0} restored. ! # -- process -- ! process.complete=Process complete. process.missing.parameter=Missing parameter. # -- rss -- |
From: <th...@us...> - 2002-08-23 14:25:06
|
Update of /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/struts In directory usw-pr-cvs1:/tmp/cvs-serv4057 Modified Files: RenderRss.java Log Message: + struts/renderRss: Revise to use latest scaffold token for ResultList (LIST). Index: RenderRss.java =================================================================== RCS file: /cvsroot/struts/artimus/WEB-INF/src/java/org/apache/artimus/struts/RenderRss.java,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** RenderRss.java 14 Aug 2002 21:12:00 -0000 1.1.1.1 --- RenderRss.java 23 Aug 2002 14:25:03 -0000 1.2 *************** *** 47,51 **** * <p> * The beans must be stored in a scaffold.util.ResultList ! * object under the attribute name "RESULT" [Tokens.RESULT_KEY]. * A default channel description is provided and each bean is * included as an item of the channel. --- 47,51 ---- * <p> * The beans must be stored in a scaffold.util.ResultList ! * object under the attribute name "LIST" [Tokens.LIST_KEY]. * A default channel description is provided and each bean is * included as an item of the channel. *************** *** 78,82 **** Channel channel = new Channel(); ResultList result = (ResultList) ! request.getAttribute(Tokens.RESULT_KEY); if (result==null) { errors.add(ActionErrors.GLOBAL_ERROR, --- 78,82 ---- Channel channel = new Channel(); ResultList result = (ResultList) ! request.getAttribute(Tokens.LIST_KEY); if (result==null) { errors.add(ActionErrors.GLOBAL_ERROR, |