RE: Problems Redirecting To Input Page After Vaildation Fails
Personally, I would try to use the same page for add, update and delete, which would solve this problem. If this is not an option for you, you may have to deal with it in ClientAction. Remove the input attribute from your action mapping, add validate=false, and add a couple of forward elements. action path=/clientaction type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request validate=false attribute=clientForm forward name=AddValidationError path=/pages/addClient.jsp/ forward name=UpdateValidationError path=/pages/updateClient.jsp/ /action Then inside ClientAction, programmatically call the validate() method, since the framework won't be calling it for us (validate=false). If validation fails, return the appropriate ActionForward, based on whether you are adding or updating. Brian Barnett -Original Message- From: Ciaran Hanley [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 27, 2004 11:57 AM To: Struts User Mailing List Subject: Problems Redirecting To Input Page After Vaildation Fails Hello can anybody help me with this problem I'm having please? I am using the same action to perform two functions action path=/clientaction type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/addClient.jsp attribute=clientForm /action This is called as follows from 2 different forms: html:form action=/clientaction?action=update focus=clientName onsubmit=return validateClientForm(this) and html:form action=/clientaction?action=add focus=clientName onsubmit=return validateClientForm(this) The problem is that because I have input=/pages/addClient.jsp ...that when a validation fails while doing an update it is directed back to the addClient.jsp rather than the updateClient.jsp As far as I know the input field will not take dynamic values. I am not sure how to resolve this problem. I need to be directed back to the correct page when validations fail Thanks Ciaran - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Problems Redirecting To Input Page After Vaildation Fails
Ciaran, When all else fails, cut and paste. :-) Seriously, I don't know of a way to make the input value dynamic. I wish it could be done like tile definitions with one action mapping extending another, but, I know that is not supported. So, the simplest solution is to have two separate action mappings for the one action class that supports both adds and updates like so: action path=/clientaction/add type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/addClient.jsp attribute=clientForm /action action path=/clientaction/update type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/updateClient.jsp attribute=clientForm /action You still get code reuse of your action class, but, you have to duplicate the action mapping specification. If you want to avoid duplicating the action mapping, the other way to go is to have a single JSP that supports both adds and updates with conditional logic in the JSP based on a mode parameter which indicates whether it is being used for an add or an update. - Van Mike Van Riper mailto:[EMAIL PROTECTED] http://www.baychi.org/bof/struts/ P.S. You don't need to specify both name and attribute values in your action mappings unless you want to store the form under a different name at request/session scope than the form configuration name. What you have done doesn't hurt anything, it is just not necessary to specify an attribute value unless the value specified for it is different than the name value. -Original Message- From: Ciaran Hanley [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 27, 2004 10:57 AM To: Struts User Mailing List Subject: Problems Redirecting To Input Page After Vaildation Fails Hello can anybody help me with this problem I'm having please? I am using the same action to perform two functions action path=/clientaction type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/addClient.jsp attribute=clientForm /action This is called as follows from 2 different forms: html:form action=/clientaction?action=update focus=clientName onsubmit=return validateClientForm(this) and html:form action=/clientaction?action=add focus=clientName onsubmit=return validateClientForm(this) The problem is that because I have input=/pages/addClient.jsp ...that when a validation fails while doing an update it is directed back to the addClient.jsp rather than the updateClient.jsp As far as I know the input field will not take dynamic values. I am not sure how to resolve this problem. I need to be directed back to the correct page when validations fail Thanks Ciaran - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: Problems Redirecting To Input Page After Vaildation Fails
- resending: hope this doesn't end up as a duplicate - Another option would be to call the validate() method yourself and return the appropriate forward. add validate=false to your mapping, plus your forms as forwards so you can still configure them in your struts-config: action path=/clientaction type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request validate=false attribute=clientForm forward name=addForm path=/pages/addClient.jsp/ forward name=updateForm path=/pages/updateClient.jsp/ /action - this way, the RequestProcessor won't call validate(). in your action, before you proceed, you can do something similar to: public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionErrors errors = form.validate(mapping, request); if ((errors != null) (!errors.isEmpty())) { request.setAttribute(Globals.ERROR_KEY, errors); if (update.equals(request.getParameter(action))) { return mapping.findForward(updateForm); } else { return mapping.findForward(addForm); } } // ... } - Hubert --- Van Riper, Mike [EMAIL PROTECTED] wrote: Ciaran, When all else fails, cut and paste. :-) Seriously, I don't know of a way to make the input value dynamic. I wish it could be done like tile definitions with one action mapping extending another, but, I know that is not supported. So, the simplest solution is to have two separate action mappings for the one action class that supports both adds and updates like so: action path=/clientaction/add type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/addClient.jsp attribute=clientForm /action action path=/clientaction/update type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/updateClient.jsp attribute=clientForm /action You still get code reuse of your action class, but, you have to duplicate the action mapping specification. If you want to avoid duplicating the action mapping, the other way to go is to have a single JSP that supports both adds and updates with conditional logic in the JSP based on a mode parameter which indicates whether it is being used for an add or an update. - Van Mike Van Riper mailto:[EMAIL PROTECTED] http://www.baychi.org/bof/struts/ P.S. You don't need to specify both name and attribute values in your action mappings unless you want to store the form under a different name at request/session scope than the form configuration name. What you have done doesn't hurt anything, it is just not necessary to specify an attribute value unless the value specified for it is different than the name value. -Original Message- From: Ciaran Hanley [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 27, 2004 10:57 AM To: Struts User Mailing List Subject: Problems Redirecting To Input Page After Vaildation Fails Hello can anybody help me with this problem I'm having please? I am using the same action to perform two functions action path=/clientaction type=ie.sentenial.application.actions.ClientAction name=clientForm scope=request input=/pages/addClient.jsp attribute=clientForm /action This is called as follows from 2 different forms: html:form action=/clientaction?action=update focus=clientName onsubmit=return validateClientForm(this) and html:form action=/clientaction?action=add focus=clientName onsubmit=return validateClientForm(this) The problem is that because I have input=/pages/addClient.jsp ...that when a validation fails while doing an update it is directed back to the addClient.jsp rather than the updateClient.jsp As far as I know the input field will not take dynamic values. I am not sure how to resolve this problem. I need to be directed back to the correct page when validations fail Thanks Ciaran __ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/ - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]