On Fri, 19 Sep 2003, Mohd Amin Mohd Din wrote: > Date: Fri, 19 Sep 2003 10:42:13 +0800 > From: Mohd Amin Mohd Din <[EMAIL PROTECTED]> > Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]> > To: 'Struts Users Mailing List' <[EMAIL PROTECTED]> > Subject: RE: Refreshing Form Submission and Duplicates > > An easier way would be to do a redirect once submitting the form to > listing the page. >
Redirect doesn't stop the user from pressing the back button (or working their way back the "Go" menu) and submitting the form again. Craig > -----Original Message----- > From: Shane Mingins [mailto:[EMAIL PROTECTED] > Sent: Friday, September 19, 2003 10:26 AM > To: 'Struts Users Mailing List' > Subject: RE: Refreshing Form Submission and Duplicates > > I noticed this the other day at http://husted.com/struts/catalog.html > > Use the Action Token methods to prevent duplicate submits > > There are methods built into the Struts action to generate one-use > tokens. A > token is placed in the session when a form is populated and also into > the > HTML form as a hidden property. When the form is returned, the token is > validated. If validation fails, then the form has already been > submitted, > and the user can be apprised. > > - saveToken(request) > - on the return trip, > isTokenValid(request) > resetToken(request) > > > I am not sure if that is of any help as I have yet to use it ... > although I > have just this minute found a case in my own application to do so ;-> > > Shane > > > > > -----Original Message----- > > From: John Reynolds [mailto:[EMAIL PROTECTED] > > Sent: Friday, 19 September 2003 2:16 p.m. > > To: [EMAIL PROTECTED] > > Subject: Refreshing Form Submission and Duplicates > > > > Hi, > > > > I have a question about a bug in my application using a Struts Form. > > This happens in multiple areas of my site, but the one example I will > > use is a Message Board feature. The problem is that when a user goes > to > > a list of messages, fills out the form to post a message and ends up > > back on the list page, the message will be submitted twice if they > > refresh the page following the form submission. this has caused > > duplicate messages throughout the message board, as it is the nature > of > > message boards to refresh the list of messages often to check for new > > ones. Keep in mind, my app strictly follows the approach of the > O'Reilly > > book. > > > > I'll try to make this easy to follow: > > > > 1. the user goes to a message board with a list of messages from other > > users. this page is /messagelist.do the action looks like this: > > > > <action > > path="/messagelist" > > name="messageListForm" > > type="myapp.framework.actions.MessageListAction" > > scope="request"> > > <forward name="Success" > path="/templates/messagelist.jsp"/> > > </action> > > > > (the "messageListForm" is a struts form bean with a List of message > > objects) > > > > 2. at the bottom of the page is a form to post your own message 3. the > > user enters their Name, Subject and Message Body and submit the form > 4. > > the form is processed by a Struts Action. the action tag in > > struts-config.xml looks like this: > > > > <action > > path="/messageinsert" > > name="messageDetailForm" > > type="myapp.framework.actions.MessageInsertAction" > > scope="request" > > validate="false"> > > <forward name="Success" path="/messagelist.do"/> > > </action> > > > > - From the naming convention, you can see that the Action inserts the > > message into storage (database) and upon success the user is forwarded > > to the same /messagelist.do action > > > > Now, when the form is submitted and this is displayed, the URL in the > > browser says: > > > > http://myapp.com/myapp/messageinsert.do > > > > I expect that this is correct because the HTML form itself was <form > > action="/messageinsert.do" method="POST">. > > > > The user's submitted message will be found on the list of messages. > > HOWEVER, IF THEY REFRESH THE SCREEN, THE MESSAGE WILL BE SUBMITTED > > AGAIN. This should not happen. If i'm the customer, i've already > > submitted the form, and now i'm seeing a list of messages. refreshing > > should have no effect on the form that i just submitted. > > > > Does anyone have a suggested fix? > > > > Thanks all, > > > > JR > > > > > > --------------------------------------------------------------------- > 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]