tapestry-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Velarde, Domonic R. - WMD" <Domonic.Vela...@ci.denver.co.us>
Subject RE: Preventing multiple form submission within Tapestry
Date Wed, 07 Sep 2005 16:37:08 GMT
I have a similar situation.  Though I am opting to go for the simpler
solution and use JavaScript to disable the submit button after the user
presses it.  Can any one show what the JavaScript looks like?  I found
many reference to how but when attempting it does not work. The page
hangs.
Here is sample code of what I have been trying:

 <input type="submit" jwcid="@Submit" value="message:button-proceed"
listener="ognl:listeners.submit" onClick="this.disabled=true;"/>

It will grey out the button, which is what I want, but then it hangs
does and does not go to the next page.

Any help much appreciated.

-----Original Message-----
From: Patrick Casey [mailto:patcasey@adelphia.net] 
Sent: Tuesday, August 30, 2005 6:15 PM
To: 'Tapestry users'
Subject: RE: Preventing multiple form submission within Tapestry


	This ought to work:

	Step 1: Synchronize your servlet.doService() on the HttpSession
so
that two user requests will never run in parallel.
	Step 2: Add a hidden, monotonically increasing (like a static
incrementer) hidden value to the form in question.
	Step 3: Add a LinkedHashMap to your Visit object called
"LastFiveSubmits". Set its removeOldest() to remove if the map size > 5.
	Step 4: When you get a "submit" request, check and see if you're
already handled a submit for this form in, say, the last 5 interactions.
If
not, handle the submit, and stuff it's submission ID into the
linkedhashmap
(from step 3).

	That should do the trick.

	Of course, using javascript to disable the submit button is much
easier, but if you can't, you can't.

	--- Pat


> -----Original Message-----
> From: Ralph Johnston [mailto:tapestry-users@rjohnston.net]
> Sent: Tuesday, August 30, 2005 5:06 PM
> To: Tapestry users
> Subject: Preventing multiple form submission within Tapestry
> 
> Hi, we're working on a project in which we need to submit a form which
> then creates
> a record in a database on successful submission.  The problem we have
is
> that if
> someone clicks on the submit button more than once, it creates
duplicate
> records of
> the record that the person is trying to submit.
> 
> We've searched the mailing list archives (as best we can) with no
luck.
> We know
> there is a way to prevent this using Javascript.  However, not all the
> people using our
> form are guaranteed to have Javascript enabled.  Therefore, we need a
way
> of
> disabling the button or creating a semaphore of sorts to prevent
multiple
> submissions
> that either create the new record or alter it in a drastic way.  Some
> ideas we have
> are...
> 
> 1) Send back something that will disable the button's submit ability
to
> submit the form
> again. For example, somehow killing TCP connection to that form until
the
> submit is
> done.
> 
> 2) Hanging when the submission occurs, like display a white page until
> it's done so
> that the user doesn't click something else and terminate the
submission.
> 
> 3) Letting the user do whatever he/she wants with the web page
> particularly by
> disabling all the other submit buttons but when the original submit
> listener finishes
> what it's doing, it redirects like we want it to do to the appropriate
> page no matter
> what page the user is on.
> 
> Any other ideas or even solutions would be appreciated. Thank you.
> 
> Ralph Johnston / Phil Whaley
> The Pathfinder Group, Ltd.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tapestry-user-help@jakarta.apache.org




---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org


Mime
View raw message