Thanks Rick.
Let me find out what DispatchAction is and then come
back.

 --- Rick Reumann <[EMAIL PROTECTED]> 內容:
> HI, Ping, you have so many different things going on
> in one action
> execute method that it is very difficult to follow
> everything. Also, you
> are doing a lot of things that do not need to be
> done (usually) from
> your action such as calling form.reset(), removing
> form bean, removing
> mappings, etc. You are doing way too many different
> things in one Action
>  ... you either need to A) Use a DispatchAction or
> B) create different
> Action classes to perform the different tasks.
> 
> Once you do that, the first action dispatch method
> you go to before
> hitting your form you do
> 
> saveToken(request);
> 
> Then in the action method that you want to make sure
> duplicate submits
> don't occur you do your check...:
> 
> isTokenValid(request))
> 
> Then when I leave that method (if it was valid
> token) I do...
> 
> resetToken(request);
> saveToken(request);
> 
> 
> So, if I were you, I'd simply create a
> DispatchAction with the methods...
> 
> 
> setUp(.. )
> 
> updateUserProfile(.. )
> 
> cancel(... )
> 
> 
> 
> 
> 
> Ping Cheung Leung wrote:
> 
> > My attention is to prevent duplicated submission.
> > I have refered to the struts-example.
> > It checks the valid of token by IsValidToken().
> > However when a form is displayed at the first
> time,
> > it always is invalid.
> > 
> > Moreover, according to the struts-example, it
> > saveToken when it finds error.
> > 
> > The behavior becomes very strange.
> > 
> > When a form is displayed at the first time, it is
> > invalid. It leads to error message displaying on
> web
> > page. Next time user clicks the submit button, it
> > becomes valid. Then it cannot avoid duplicated
> > submission.
> > 
> > All I want is very simple. When user clicks a
> submit
> > button. It saves record if data checking is ok.
> > If user goes back and re-click the submit button.
> > Duplicated submission should be detected.
> > 
> > Below is my codings. What needs to be changed
> > so that duplicated submission can be avoided?
> > 
> > package com.erp.quotation;
> > 
> > import java.util.Locale;
> > import org.apache.struts.action.*;
> > import javax.servlet.http.*;
> > import org.apache.commons.logging.Log;
> > import org.apache.commons.logging.LogFactory;
> > import org.apache.struts.util.MessageResources;
> > 
> > public final class AddUserProfileAction extends
> Action
> > {
> > 
> >  private Log log =
> >
>
LogFactory.getFactory().getInstance(this.getClass().getName());
> >  
> >  
> >  public ActionForward execute (ActionMapping
> mapping,
> >            ActionForm form,
> >            HttpServletRequest request,
> >            HttpServletResponse response) 
> >    throws Exception {
> > 
> >    if (isCancelled(request)) {
> >          if (log.isInfoEnabled()) {
> >             log.info(" " + mapping.getAttribute()
> + "
> > - Registration transaction was cancelled");
> >          }
> >          removeFormBean(mapping, request);
> >          return mapping.findForward("cancel");
> >    }
> >    
> >    HttpSession session = request.getSession();
> >    ActionErrors errors = new ActionErrors();
> >       if (log.isTraceEnabled()) {
> >           log.trace(" Checking transactional
> control
> > token");
> >       }   
> >       if (!isTokenValid(request)) {
> >          log.trace("valid token");
> >           errors.add(ActionErrors.GLOBAL_ERROR,
> >                  new
> > ActionError("error.transaction.token"));
> >       } else {
> >        log.trace("invalid token");
> >       }
> >       resetToken(request);   
> >       
> >      Locale locale = getLocale(request);
> >      MessageResources messages =
> > getResources(request);
> >      String action =
> request.getParameter("action");
> >         
> >      if (checking_is_ok) {
> >          save_record_to_database();
> >          ActionMessages actionMessages = new
> > ActionMessages();
> >          ActionMessage actionMessage = new
> > ActionMessage("statusLine.recordAdded");
> >          actionMessages.add(Constants.statusLine,
> > actionMessage);
> >          saveMessages (request, actionMessages);
> >          saveToken(request);
> >          addUserProfileForm.reset(mapping,
> request);
> >          return mapping.findForward("success");       
>   
> >      }
> >      // Remove the obsolete form bean
> >      if (mapping.getAttribute() != null) {
> >         if ("request".equals(mapping.getScope()))
> >               
> > request.removeAttribute(mapping.getAttribute());
> >         else
> >               
> > session.removeAttribute(mapping.getAttribute());
> >      }     
> >      if (!errors.isEmpty()) {
> >         saveErrors(request, errors);
> >         saveToken(request);
> >         return (mapping.getInputForward());
> >      }
> >    return mapping.findForward("failure");       
> >  }     
> > 
> > }
> > 
> >
>
_________________________________________________________
> > 必殺技、飲歌、小星星...
> > 浪漫鈴聲  情心連繫
> >
>
http://us.rd.yahoo.com/evt=22281/*http://ringtone.yahoo.com.hk/
> > 
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > 
> 
> 
> -- 
> Rick
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
>  

_________________________________________________________
必殺技、飲歌、小星星...
浪漫鈴聲  情心連繫
http://us.rd.yahoo.com/evt=22281/*http://ringtone.yahoo.com.hk/

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

Reply via email to