Rick Reumann wrote: >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"); >> } >> >>} >> >> Nice reply, Rick!
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]