Yoour missing the "validator-rules.xml" in your strus-config - something like...
<!-- Validator PlugIn --> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> </plug-in> Niall ----- Original Message ----- From: "Jeff Smith" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Tuesday, November 23, 2004 1:13 PM Subject: Re: Multi-Page Wizard Validation Problem > Setting the form bean type to DynaValidatorForm seems to trigger > validation. Thanks much. > In the logs I'm now seeing: > > [java] 06:08:42,407 ERROR [DynaValidatorForm] No ValidatorAction > named required found for field firstName > [java] org.apache.commons.validator.ValidatorException: No > ValidatorAction named required found for field firstName > > Now it seems like I'm just doing something silly with the validation.xml > > -jeff > > On Nov 23, 2004, at 1:32 AM, Niall Pemberton wrote: > > > Looking at the original post, where you showed your struts-config.xml > > and > > validation.xml - you're using the wrong flavour of Dyna form... > > > > 1) DynaValidatorActionForm validates according to the Action Mapping's > > path > > > > So in your validation.xml you would have three forms as follows... > > > > <form-validation> > > <formset> > > <form name="/reg/step1"> > > .... > > </form> > > <form name="/reg/step2"> > > </form> > > <form name="/reg/step3"> > > </form> > > > > 2) DynaValidatorForm validates according to the Action Mapping's form > > name. > > > > So in your validation.xml you would have one form (as you do).... > > <form-validation> > > <formset> > > <form name="registrationForm"> > > .... > > </form> > > > > Niall > > > > > > ----- Original Message ----- > > From: "David G. Friedman" <[EMAIL PROTECTED]> > > To: "Struts Users Mailing List" <[EMAIL PROTECTED]> > > Sent: Tuesday, November 23, 2004 4:55 AM > > Subject: RE: Multi-Page Wizard Validation Problem > > > > > >> Jeff, > >> > >> This is my final set of questions (I'm out of questions and will > >> concede > >> being useless if this question fails). > >> > >> I noticed your reg actions are all of class > >> "com.rochets.application.action.RegistrationAction". Do you have > >> your own > >> validate method in those actions or are you leaving it to the default > >> provided by whatever class you subclass? Are they simply > >> org.apache.struts.action.Action(?) subclasses with no overridden(?) > >> validate() method? If defined your own validate() method and are not > >> calling super.validate or invoking the form's validate() method > >> appropriately, perhaps no ActionMessages/ActionErrors are being > >> returned > > so > >> it looks like the validation is clear when it should be failing. > >> > >> Regards, > >> David > >> > >> -----Original Message----- > >> From: Jeff Smith [mailto:[EMAIL PROTECTED] > >> Sent: Monday, November 22, 2004 11:43 PM > >> To: Struts Users Mailing List > >> Subject: Re: Multi-Page Wizard Validation Problem > >> > >> > >> I tried setting the page number in the first page to 5. When I hit > >> next > >> it gets correctly incremented to 6 but no validation. > >> > >> If I put stuff back to normal but add some output to the page of the > >> page number I get > >> 1 when I start, 2 after submitting step 1, 3 after submitting step 2. > >> Seems to be correct. > >> > >> -jeff > >> > >> > >> On Nov 22, 2004, at 9:33 PM, David G. Friedman wrote: > >> > >>> Jeff, > >>> > >>> Have you tried going to the first step and hard-coding the hidden > >>> variable > >>> "page" to be something high like "5". That would force it to try all > >>> validations. > >>> > >>> Can you print out the value of the "page" form field in each JSP? > >>> I'd > >>> like > >>> to know when you submit your various forms to /reg/step1.do, > >>> /reg/step2.do, > >>> /reg/step3.do, what is the value of the "page" attribute submitted. > >>> > >>> Regards, > >>> David (he who must be missing something from all of the details you > >>> provided! LOL) > >>> > >>> -----Original Message----- > >>> From: Jeff Smith [mailto:[EMAIL PROTECTED] > >>> Sent: Monday, November 22, 2004 11:26 PM > >>> To: Struts Users Mailing List > >>> Subject: Re: Multi-Page Wizard Validation Problem > >>> > >>> > >>> David, > >>> > >>> Thanks for all your help with this. > >>> > >>> I tried setting the input attribute to a dummy jsp page and it never > >>> gets there either. I also confirmed that I had the appropriate > >>> messages > >>> in my resource bundle, although I don't know why that would make a > >>> difference. At this point I'll try anything. > >>> > >>> When the app deploys I see the following: > >>> [java] 21:19:27,059 INFO [ValidatorPlugIn] Loading validation > >>> rules file from '/WEB-INF/validator-rules.xml' > >>> [java] 21:19:27,063 INFO [ValidatorPlugIn] Loading validation > >>> rules file from '/WEB-INF/validation.xml' > >>> [java] 21:19:27,379 INFO [ValidatorPlugIn] Loading validation > >>> rules file from '/WEB-INF/struts/reg/validation.xml' > >>> > >>> The third one is the one in question. So it appears the validator is > >>> loading my file correctly. > >>> > >>> > >>> > >>> On Nov 22, 2004, at 9:14 PM, David G. Friedman wrote: > >>> > >>>> Jeff, > >>>> > >>>> Have you tried setting the input="" attribute to a completely > >>>> different page > >>>> to make sure validation IS failing and that you're just not properly > >>>> showing > >>>> error messages? > >>>> > >>>> Do your logs show the Validation plugIn being configured upon > >>>> web-application startup? > >>>> > >>>> Regards, > >>>> David > >>>> > >>>> -----Original Message----- > >>>> From: Jeff Smith [mailto:[EMAIL PROTECTED] > >>>> Sent: Monday, November 22, 2004 9:37 AM > >>>> To: Struts Users Mailing List > >>>> Subject: Re: Multi-Page Wizard Validation Problem > >>>> > >>>> > >>>> I added that, it fixes the page always resetting problem, but still > >>>> no > >>>> validation between page changes. > >>>> > >>>> On Nov 22, 2004, at 7:26 AM, Bill Siggelkow wrote: > >>>> > >>>>> I believe you need a form-property named 'page' with a type of > >>>>> 'java.lang.Integer'. > >>>>> > >>>>> -Bill Siggelkow > >>>>> > >>>>> > >>>>> > >>>>> Jeff Smith wrote: > >>>>>> Let me paste the files in instead > >>>>>> -- struts config starts here -- > >>>>>> <?xml version="1.0" encoding="iso-8859-1"?> > >>>>>> <!DOCTYPE struts-config PUBLIC > >>>>>> "-//Apache Software Foundation//DTD Struts Configuration > >>>>>> 1.2//EN" > >>>>>> "http://struts.apache.org/dtds/struts-config_1_2.dtd"> > >>>>>> <struts-config> > >>>>>> <!-- > >>>>>> Form Bean Definitions > >>>>>> --> > >>>>>> <form-beans> > >>>>>> <form-bean name="registrationForm" > >>>>>> type="org.apache.struts.validator.DynaValidatorActionForm"> > >>>>>> <!-- Page One --> > >>>>>> <form-property name="firstName" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="middleName" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="lastName" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="username" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="password" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="password2" > >>>>>> type="java.lang.String"/> > >>>>>> <!-- Page Two --> > >>>>>> <form-property name="birthDate" > >>>>>> type="java.lang.String"/> > >>>>>> <!-- Page Three --> > >>>>>> <form-property name="street1" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="street2" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="city" type="java.lang.String"/> > >>>>>> <form-property name="state" type="java.lang.String"/> > >>>>>> <form-property name="country" > >>>>>> type="java.lang.String"/> > >>>>>> <form-property name="postalCode" > >>>>>> type="java.lang.String"/> > >>>>>> </form-bean> > >>>>>> </form-beans> > >>>>>> <!-- > >>>>>> Action Mappings > >>>>>> --> > >>>>>> <action-mappings> > >>>>>> <action path="/reg/step1" > >>>>>> parameter="command" > >>>>>> > >>>>>> type="com.rochets.application.action.RegistrationAction" > >>>>>> name="registrationForm" > >>>>>> scope="session" > >>>>>> validate="true" > >>>>>> input="reg.step1"> > >>>>>> <forward name="next" path="reg.step2"/> > >>>>>> <forward name="cancel" > >>>>>> path="/WEB-INF/jsp/mywizardcancel.jsp"/> > >>>>>> </action> > >>>>>> <action path="/reg/step2" > >>>>>> parameter="command" > >>>>>> > >>>>>> type="com.rochets.application.action.RegistrationAction" > >>>>>> name="registrationForm" > >>>>>> scope="session" > >>>>>> validate="true" > >>>>>> input="reg.step2"> > >>>>>> <forward name="previous" path="reg.step1"/> > >>>>>> <forward name="next" path="reg.step3"/> > >>>>>> <forward name="finish" > >>>>>> path="/WEB-INF/jsp/mywizarddone.jsp"/> > >>>>>> <forward name="cancel" > >>>>>> path="/WEB-INF/jsp/mywizardcancel.jsp"/> > >>>>>> </action> > >>>>>> <action path="/reg/step3" > >>>>>> parameter="command" > >>>>>> > >>>>>> type="com.rochets.application.action.RegistrationAction" > >>>>>> name="registrationForm" > >>>>>> scope="session" > >>>>>> validate="true" > >>>>>> input="reg.step3"> > >>>>>> <forward name="previous" path="reg.step3"/> > >>>>>> <forward name="finish" > >>>>>> path="/WEB-INF/jsp/mywizarddone.jsp"/> > >>>>>> <forward name="cancel" > >>>>>> path="/WEB-INF/jsp/mywizardcancel.jsp"/> > >>>>>> </action> > >>>>>> <action path="/reg/registration" > >>>>>> parameter="command" > >>>>>> name="registrationForm" > >>>>>> scope="session" > >>>>>> > >>>>>> type="com.rochets.application.action.RegistrationAction" > >>>>>> validate="true" > >>>>>> input="/reg/registration.do"> > >>>>>> <forward name="next" path="reg.step1"/> > >>>>>> </action> > >>>>>> </action-mappings> > >>>>>> <message-resources parameter="resources.reg.Registration" > >>>>>> null="false"/> > >>>>>> <plug-in > >>>>>> className="org.apache.struts.validator.ValidatorPlugIn"> > >>>>>> <set-property > >>>>>> property="pathnames" > >>>>>> value="/WEB-INF/struts/reg/validation.xml"/> > >>>>>> </plug-in> > >>>>>> </struts-config> > >>>>>> -- validation.xml starts here -- > >>>>>> <?xml version="1.0" encoding="iso-8859-1"?> > >>>>>> <!DOCTYPE form-validation PUBLIC > >>>>>> "-//Apache Software Foundation//DTD Commons Validator > >>>>>> Rules > >>>>>> Configuration 1.1.3//EN" > >>>>>> > >>>>>> "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"> > >>>>>> <form-validation> > >>>>>> <formset> > >>>>>> <form name="registrationForm"> > >>>>>> <!-- Page One --> > >>>>>> <field property="firstName" > >>>>>> depends="required,mask,minlength,maxlength" page="1"> > >>>>>> <arg key="firstname" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>mask</var-name> > >>>>>> <var-value>^\w+$</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="middleName" depends="mask,maxlength" > >>>>>> page="1"> > >>>>>> <arg key="firstname" position="0"/> > >>>>>> <var> > >>>>>> <var-name>mask</var-name> > >>>>>> <var-value>^\w+$</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="lastName" > >>>>>> depends="required,mask,minlength,maxlength" page="1"> > >>>>>> <arg key="lastname" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>mask</var-name> > >>>>>> <var-value>^\w+$</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="username" > >>>>>> depends="required,maxlength,email" page="1"> > >>>>>> <arg key="username" position="0"/> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="password" > >>>>>> depends="required,minlength,maxlength,twofields" page="1"> > >>>>>> <arg key="password" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>6</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>secondProperty</var-name> > >>>>>> <var-value>password2</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="password2" > >>>>>> depends="required,minlength,maxlength" page="1"> > >>>>>> <arg key="password2" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>6</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <!-- Page Two --> > >>>>>> <field property="birthDate" depends="required,date" > >>>>>> page="2"> > >>>>>> <arg key="birthdate" position="0"/> > >>>>>> <var> > >>>>>> <var-name>datePatternStrict</var-name> > >>>>>> <var-value>MM/dd/yyyy</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="weight" > >>>>>> depends="required,minlength,maxlength,integer" page="2"> > >>>>>> <arg key="weight" position="0"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>3</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="goalWeight" > >>>>>> depends="required,minlength,maxlength,integer" page="2"> > >>>>>> <arg key="goalweight" position="0"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>3</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="currentDaysPerWeek" > >>>>>> depends="required,maxlength,integer,intRange" page="2"> > >>>>>> <arg key="currentdaysperweek" position="0"/> > >>>>>> <var> > >>>>>> <var-name>min</var-name> > >>>>>> <var-value>0</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>max</var-name> > >>>>>> <var-value>7</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="availableMinutesPerDay" > >>>>>> depends="required,maxlength,integer,intRange" page="2"> > >>>>>> <arg key="availableminutesperday" position="0"/> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>3</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>min</var-name> > >>>>>> <var-value>30</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>max</var-name> > >>>>>> <var-value>60</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="availableDays" depends="required" > >>>>>> page="2"> > >>>>>> <arg key="availabledays" position="0"/> > >>>>>> </field> > >>>>>> <!-- Page Three --> > >>>>>> <field property="street1" > >>>>>> depends="required,minlength,maxlength" page="3"> > >>>>>> <arg key="street1" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>6</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="street1" > >>>>>> depends="minlength,maxlength" > >>>>>> page="3"> > >>>>>> <arg key="street1" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>6</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="city" > >>>>>> depends="required,minlength,maxlength" page="3"> > >>>>>> <arg key="street1" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="state" > >>>>>> depends="required,minlength,maxlength" page="3"> > >>>>>> <arg key="state" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>2</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="country" > >>>>>> depends="required,minlength,maxlength" page="3"> > >>>>>> <arg key="country" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>6</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> <field property="postalCode" > >>>>>> depends="required,minlength,maxlength" page="3"> > >>>>>> <arg key="postalcode" position="0"/> > >>>>>> <arg name="minlength" key="${var:minlength}" > >>>>>> resource="false" position="1"/> > >>>>>> <var> > >>>>>> <var-name>minlength</var-name> > >>>>>> <var-value>5</var-value> > >>>>>> </var> > >>>>>> <var> > >>>>>> <var-name>maxlength</var-name> > >>>>>> <var-value>255</var-value> > >>>>>> </var> > >>>>>> </field> > >>>>>> </form> > >>>>>> </formset> > >>>>>> </form-validation> > >>>>>> On Nov 21, 2004, at 12:07 PM, Jeff Smith wrote: > >>>>>>> All, > >>>>>>> > >>>>>>> Sorry if this has been discussed, I've been digging around on the > >>>>>>> web and can't seem to find a solution to my problem. I have a 3 > >>>>>>> step > >>>>>>> registration process that works like a "wizard". I defined a > >>>>>>> LookupDispatchAction subclass to handle things like the next and > >>>>>>> previous button. Everything works great except validation never > >>>>>>> gets > >>>>>>> triggered and the page variable on the form bean is always reset > >>>>>>> to > >>>>>>> zero. I have confirmed with the debugger that it is the same > >>>>>>> instance of the form bean throughout the steps. I assume the two > >>>>>>> problems are related because my validation.xml specifies page > >>>>>>> numbers greater than zero. I've attached the struts-config.xml > >>>>>>> and > >>>>>>> the validation.xml. > >>>>>>> > >>>>>>> Any help is appreciated. > >>>>>>> > >>>>>>> -jeff > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> ----------------------------------------------------------------- > >>>>>>> -- > >>>>>>> - > >>>>>>> - > >>>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>>>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>>>> > >>>>> > >>>>> ------------------------------------------------------------------- > >>>>> -- > >>>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>>> > >>>> > >>>> -------------------------------------------------------------------- > >>>> - > >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>>> > >>>> > >>>> -------------------------------------------------------------------- > >>>> - > >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >>> > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: [EMAIL PROTECTED] > >>> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > >> For additional commands, e-mail: [EMAIL PROTECTED] > >> > >> > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]