Sounds like you are using Mozilla or Firebird.  Those browsers will actually
send a new request when you hit the back button, which (depending on how
your action works) will generate a new token.

With Internet Exploder, the page is pulled from cache, which Struts will
(again, depending on how your action looks) catch and reject the token
(isTokenValid() will return false).


--
James Mitchell
Software Engineer / Open Source Evangelist
EdgeTech, Inc.
678.910.8017
AIM: jmitchtx

----- Original Message -----
From: "PC Leung" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, August 27, 2004 10:54 AM
Subject: My IsValidToken() cannot trap duplicated submission.


> After clicking submit button and then go back previous page,
> data is still there, click the submit button again. record will be
> saved once more time. The IsValidToken cannot trap the duplicated
> submission.
>
> Initial page:
> http://localhost:8080/erp/AddUserProfile.jsp
> if clicking submit button, goes to
> http://localhost:8080/erp/addUserProfile.do?method=create
>
> struts-config.xml like this.
>     <action    path="/addUserProfileSetup"
>                type="com.erp.quotation.AddUserProfileAction"
>                name="addUserProfileForm"
>            scope="request"
>            validate="false">
>       <forward name="success" path="/AddUserProfile.jsp" redirect="true"/>
>     </action>
>     <action    path="/addUserProfile"
>                type="com.erp.quotation.AddUserProfileDispatchAction"
>                name="addUserProfileForm"
>            scope="request"
>            validate="true"
>                         parameter="method"
>                input="/AddUserProfile.jsp">
>       <forward name="success" path="/AddUserProfile.jsp"/>
>       <forward name="failure" path="/AddUserProfile.jsp"/>
>       <forward name="cancel" path="/UserMaint.jsp"/>
>     </action>
>
> Initial page already shows with a token.
>
> Why the following DispatchAction cannot trap duplicated submission?
>
> public final class AddUserProfileDispatchAction extends DispatchAction {
>     public ActionForward create (ActionMapping mapping,
> ActionForm form,
> HttpServletRequest request,
> HttpServletResponse response)
>       throws Exception {
>     HttpSession session = request.getSession();
>   ActionErrors errors = new ActionErrors();
>       if (!isTokenValid(request, true)) {
>           errors.add(ActionErrors.GLOBAL_ERROR,
>                  new ActionError("error.transaction.token"));
>       }
>
> ---------------------------------------------------------------------
> 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]

Reply via email to