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]