Jeff,
Do the pages reg.step1, reg.step2, and reg.step3 all do an html hidden
tag
for the page variable such as:
<html:hidden name="page" value="X" />
Substitute X for the appropriate page number.
Also, I think you have an infinite loop when you set the
"/reg/registration"
action to call it's own action upon validation failure (the
input="..."
attribute). Shouldn't you set it to reg.step1 if validation fails?
I'm
assuming reg.step1, reg.step2, and reg.step3 are tiles.
Additionally, calling a *.do Struts action from within another struts
action
is not the wisest course of action UNLESS you are doing a
redirect="true" on
your forward. Without the redirect="true", Struts will perform the
whole
set of preprocessing again when the new *.do action is invoked. This
repeats everything struts ALREADY performed to get to your first
action.
Essentially, it is a big waste of time/resources/cpu.
Regards,
David
-----Original Message-----
From: Jeff Smith [mailto:[EMAIL PROTECTED]
Sent: Sunday, November 21, 2004 2:15 PM
To: Struts Users Mailing List
Subject: Re: Multi-Page Wizard Validation Problem
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]