RE: Problems Redirecting To Input Page After Vaildation Fails

2004-01-27 Thread Barnett, Brian W.
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

2004-01-27 Thread Van Riper, Mike
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

2004-01-27 Thread Hubert Rabago
- 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]