I am trying to implement a pattern so that I can use struts tokens to
help prevent double submission.  I seem to be getting a strange
sequence of events that I don't quite follow.  Here is what I want to
do at a high level

displayCreateAccount  -- forwards to -->  CreateAccount.jsp (with form
action defined as /createAccount)
createAccount -- forwards to --> displayCreateAccountStep2 -- forwards
to --> CreateAccountStep2.jsp

The actions that start with 'display' merely set the struts token (e.g
saveToken( request ); )
Then it forwards it along to a jsp.

The actions that start with 'Create' check to see if the token is
valid then it processes the form submission and then
forwards it to another display action which will then set the next
toke for the next display of a JSP.

I have checked and rechecked all of my configs but I do not see a
mistake.  I have also rebuilt the entire war
and cleaned out EVERYTHING in Tomcat but I get the same result.  When
I hit the first displayCreateAccount action
it properly forwards control to the jsp page that is then presented.
When the form on the jsp page is submitted
the displayCreateAccountStep2 action is found (see log below) in the
mapping YET the original displayCreateAccount is executed.  I have
turned on
debug of org.apache.struts.  Here is my struts-config.xml and a
snippet of the logs showing what is happening.

I am curious as to why this is happening.  I really want to understand
what I am doing wrong or why it is working this way.
Please let me know if I need to supply any more supporting documents.

thanks

Doug

snippet from struts-config.xml

------------

    <global-forwards>
        <forward name="logon" path="/logon.do"/>
        <forward name="logoff" path="/logoff.do"/>
        <forward name="doubleSubmit" path="display.double.submit"/>
    </global-forwards>

    <action-mappings>

        <action path="/displayCreateAccount"
                type="capesafe.web.action.DisplayCreateAccountAction"
                name="accountSetupForm"
                scope="request"
                cancellable="true"
                validate="false">
          <forward name="display1" path="display.create.account.1"/>
        </action>

        <action path="/createAccount"
                type="capesafe.web.action.CreateAccountAction"
                name="accountSetupForm"
                scope="request"
                cancellable="true"
                input="display.create.account.1">
          <forward name="success" path="/displayCreateAccountStep2"/>
          <forward name="failure" path="/WEB-INF/common/FailedLogon.jsp"/>
          <forward name="cancel" path="/WEB-INF/common/CancelLogon.jsp"/>
        </action>

        <action path="/displayCreateAccountStep2"
                type="capesafe.web.action.DisplayCreateAccountActionStep2"
                name="accountSetupForm"
                scope="request"
                cancellable="true"
                validate="false">
          <forward name="displayStep2" path="display.create.account.2"/>
        </action>

        <action path="/createAccountStep2"
                type="capesafe.web.action.CreateAccountActionStep2"
                name="accountSetupFormStep2"
                scope="request"
                cancellable="true"
                input="display.create.account.2">
          <forward name="success" path="display.create.account.3"/>
          <forward name="failure" path="/WEB-INF/common/FailedLogon.jsp"/>
          <forward name="cancel" path="/WEB-INF/common/CancelLogon.jsp"/>
        </action>
    </action-mappings>

-----------------
snippet from log
------------------

42274 2008-04-01 13:38:12,979 DEBUG ModuleUtils  - Get module name for
path /displayCreateAccount.do
42274 2008-04-01 13:38:12,979 DEBUG ModuleUtils  - Module name found: default
42274 2008-04-01 13:38:12,979 INFO  ComposableRequestProcessor  -
Initializing composable request processor for module prefix ''
42274 2008-04-01 13:38:12,979 DEBUG ComposableRequestProcessor  -
setActionContextClassName: no className specified
42296 2008-04-01 13:38:13,001 DEBUG ComposableRequestProcessor  -
Using processing chain for this request
42296 2008-04-01 13:38:13,001 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExceptionCatcher
42296 2008-04-01 13:38:13,001 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectLocale
42296 2008-04-01 13:38:13,001 DEBUG AbstractSelectLocale  - retrieve config...
42298 2008-04-01 13:38:13,003 DEBUG AbstractSelectLocale  - set
context locale to en_US
42299 2008-04-01 13:38:13,004 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetOriginalURI
42299 2008-04-01 13:38:13,004 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.RequestNoCache
42299 2008-04-01 13:38:13,004 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetContentType
42299 2008-04-01 13:38:13,004 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.RemoveCachedMessages
42300 2008-04-01 13:38:13,005 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectAction
42300 2008-04-01 13:38:13,005 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.AuthorizeAction
42300 2008-04-01 13:38:13,005 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.CreateActionForm
42300 2008-04-01 13:38:13,005 DEBUG CreateActionForm  - Look up
form-bean accountSetupForm
42303 2008-04-01 13:38:13,008 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PopulateActionForm
42304 2008-04-01 13:38:13,009 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ValidateActionForm
42304 2008-04-01 13:38:13,009 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectInput
42304 2008-04-01 13:38:13,009 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteCommand
42305 2008-04-01 13:38:13,010 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectForward
42305 2008-04-01 13:38:13,010 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.SelectInclude
42305 2008-04-01 13:38:13,010 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformInclude
42305 2008-04-01 13:38:13,010 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.CreateAction
42306 2008-04-01 13:38:13,011 INFO  CreateAction  - Initialize action
of type: capesafe.web.action.DisplayCreateAccountAction
42309 2008-04-01 13:38:13,014 DEBUG AbstractCreateAction  - setting
action to [EMAIL PROTECTED]
42309 2008-04-01 13:38:13,014 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ExecuteAction
42309 2008-04-01 13:38:13,014 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteForwardCommand
42310 2008-04-01 13:38:13,015 DEBUG I18nFactorySet  - Can't open file
'/WEB-INF/tiles-defs_en_US.xml'
42314 2008-04-01 13:38:13,019 DEBUG I18nFactorySet  - Can't open file
'/WEB-INF/tiles-defs_en.xml'
42316 2008-04-01 13:38:13,021 INFO  TilesPreProcessor  - Tiles process
complete; forward to /WEB-INF/tiles/layout.jsp
42359 2008-04-01 13:38:13,064 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/header.jsp'.
42518 2008-04-01 13:38:13,223 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/menu.jsp'.
42540 2008-04-01 13:38:13,245 DEBUG InsertTag  - insert
page='/WEB-INF/common/CreateAccount.jsp'.
42748 2008-04-01 13:38:13,453 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/footer.jsp'.
42902 2008-04-01 13:38:13,607 DEBUG TilesPreProcessor  - Tiles
processed, so clearing forward config from context.
42902 2008-04-01 13:38:13,607 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformForward

< -- what follows is after I submit the form, this is where it gets odd -->

60247 2008-04-01 13:38:30,952 DEBUG ModuleUtils  - Get module name for
path /createAccount.do
60247 2008-04-01 13:38:30,952 DEBUG ModuleUtils  - Module name found: default
60247 2008-04-01 13:38:30,952 DEBUG ComposableRequestProcessor  -
Using processing chain for this request
60247 2008-04-01 13:38:30,952 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExceptionCatcher
60247 2008-04-01 13:38:30,952 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectLocale
60247 2008-04-01 13:38:30,952 DEBUG AbstractSelectLocale  - retrieve config...
60248 2008-04-01 13:38:30,953 DEBUG AbstractSelectLocale  - set
context locale to en_US
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetOriginalURI
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.RequestNoCache
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetContentType
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.RemoveCachedMessages
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectAction
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.AuthorizeAction
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.CreateActionForm
60248 2008-04-01 13:38:30,953 DEBUG CreateActionForm  - Look up
form-bean accountSetupForm
60248 2008-04-01 13:38:30,953 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PopulateActionForm
60249 2008-04-01 13:38:30,954 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ValidateActionForm
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectInput
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteCommand
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectForward
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.SelectInclude
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformInclude
60308 2008-04-01 13:38:31,013 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.CreateAction
60308 2008-04-01 13:38:31,013 INFO  CreateAction  - Initialize action
of type: capesafe.web.action.CreateAccountAction
60310 2008-04-01 13:38:31,015 DEBUG AbstractCreateAction  - setting
action to [EMAIL PROTECTED]
60310 2008-04-01 13:38:31,015 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ExecuteAction
60311 2008-04-01 13:38:31,016 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteForwardCommand
60311 2008-04-01 13:38:31,016 DEBUG TilesPreProcessor  - no uri
computed, so pass to next command

<!-- look at this ... it sees the displayCreateAccountStep action but
it executes displayCreateAccount.do instead ???-->
60311 2008-04-01 13:38:31,016 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformForward
60312 2008-04-01 13:38:31,017 DEBUG PerformForward  - Forwarding to
/displayCreateAccountStep2
60312 2008-04-01 13:38:31,017 DEBUG ModuleUtils  - Get module name for
path /displayCreateAccount.do
60312 2008-04-01 13:38:31,017 DEBUG ModuleUtils  - Module name found: default
60312 2008-04-01 13:38:31,017 DEBUG ComposableRequestProcessor  -
Using processing chain for this request
60312 2008-04-01 13:38:31,017 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExceptionCatcher
60312 2008-04-01 13:38:31,017 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectLocale
60312 2008-04-01 13:38:31,017 DEBUG AbstractSelectLocale  - retrieve config...
60312 2008-04-01 13:38:31,017 DEBUG AbstractSelectLocale  - set
context locale to en_US
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetOriginalURI
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.RequestNoCache
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SetContentType
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.RemoveCachedMessages
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectAction
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.AuthorizeAction
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.CreateActionForm
60313 2008-04-01 13:38:31,018 DEBUG CreateActionForm  - Look up
form-bean accountSetupForm
60313 2008-04-01 13:38:31,018 DEBUG FormBeanConfig  - Can reuse
existing instance (non-dynamic)
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PopulateActionForm
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ValidateActionForm
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectInput
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteCommand
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.SelectForward
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.SelectInclude
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformInclude
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.CreateAction
60313 2008-04-01 13:38:31,018 DEBUG AbstractCreateAction  - setting
action to [EMAIL PROTECTED]
60313 2008-04-01 13:38:31,018 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.ExecuteAction
60314 2008-04-01 13:38:31,019 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.ExecuteForwardCommand
60314 2008-04-01 13:38:31,019 INFO  TilesPreProcessor  - Tiles process
complete; forward to /WEB-INF/tiles/layout.jsp
60314 2008-04-01 13:38:31,019 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/header.jsp'.
60483 2008-04-01 13:38:31,188 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/menu.jsp'.
60494 2008-04-01 13:38:31,199 DEBUG InsertTag  - insert
page='/WEB-INF/common/CreateAccount.jsp'.
60524 2008-04-01 13:38:31,229 DEBUG InsertTag  - insert
page='/WEB-INF/tiles/footer.jsp'.
60566 2008-04-01 13:38:31,271 DEBUG TilesPreProcessor  - Tiles
processed, so clearing forward config from context.
60566 2008-04-01 13:38:31,271 DEBUG ActionCommandBase  - Executing
org.apache.struts.chain.commands.servlet.PerformForward

-- 
What profits a man if he gains the whole world yet loses his soul?

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to