struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Corbin" <dcor...@imperitek.com>
Subject Re: Dynamic forwardings...
Date Mon, 27 Aug 2001 18:29:33 GMT
Thanks.  That makes more sense to me now...
----- Original Message -----
From: "Ted Husted" <husted@apache.org>
To: <struts-user@jakarta.apache.org>
Sent: Monday, August 27, 2001 7:47 AM
Subject: Re: Dynamic forwardings...


> If you are forwarding the request, then everything in the request,
> including the original parameters are forwarded too. So you don't really
> need to specify the parameters again.
>
> If you need to change the parameters, then you could generate a new
> query string for the next forward, or put the value into the request
> some other way. If I was forwarding from one Action to another, I might
> use my own object for the parameters I was passing, and have the Action
> check for that before using what was in the request.
>
> One likely object would be the ActionForm for the next mapping. If the
> ActionForms had the tableID and itemID properties, you could pass the
> information there instead of the going to the request parameters
> directly.
>
> A query string, like ?tableID=this&itemID, is what a HTML form using
> type="GET" generates when it is submitted. When the controller receives
> the request, it doesn't care (or really know) if the request came from
> an embedded query string or a HTML form, everything is handled the same
> way.
>
> So, an ActionForm is place to store the parameters of a GET or POST
> request. If the name of the parameter matches the name of a property,
> then the controller copies the value over. So form.getThis() and
> request.getParameter("this") become equivalent.
>
> If there is already an ActionForm in the request, then the controller
> calls reset() and repopulates it (via BeanUtils.populate). To use an
> ActionForm to pass information from one Action to another, it would
> needs a "readonly" flag that would keep reset() and the other mutators
> from changing any of the existing values. Since the controller reuses
> ActionForms, they can be a great way pass information along -- so long
> as you can keep the controller from messing with it along the way.
>
> I can understand why people might want to generate an ActionForward with
> a new set of parameters, and wouldn't vote against it, but personally it
> seems like a kludge to me. Once the request is received, I believe the
> expected parameters should be encapsulated in the ActionForm (thereby
> documenting them), and any cross-Action communications should take place
> via ActionForms. If an ActionForm is meant to be forwarded, like a value
> object, then it can be written so that the mutators (including reset())
> can be switched off and on.
>
> Though, of course, whatever design works best for you is always the best
> design ;-)
>
> -- Ted Husted, Husted dot Com, Fairport NY USA.
> -- Custom Software ~ Technical Services.
> -- Tel +1 716 737-3463
> -- http://www.husted.com/about/struts/
>
>
> David Corbin wrote:
> >
> > I understand the first choice presented below.  But I don't understand
the
> > second choice.  I think I fail to fully understand ActionForm.  Are you
> > saying that if I have a populated ActionForm, then all of those
arguments
> > get "passed on" when I forward to another action?
> >
> > ----- Original Message -----
> > From: "Ted Husted" <husted@apache.org>
> > To: <struts-user@jakarta.apache.org>
> > Sent: Sunday, August 26, 2001 9:11 PM
> > Subject: Re: Dynamic forwardings...
> >
> > > You can construct ActionForwards from scratch, and I have seen people
> > > include query strings with that.
> > >
> > >
http://www.mail-archive.com/struts-user@jakarta.apache.org/msg14224.html
> > >
> > > Personally, I would think about adding these parameters as hidden
fields
> > > to the ActionForm, use the form instead, and forget about the
> > > parameters. Struts automatically populates the ActionForm from the
> > > parameters.
> > >
> > > It would also populate the same or different ActionForm for the second
> > > ActionMapping if you forwarded the request.
> > >
> > > David Corbin wrote:
> > > >
> > > > I'm not sure where I'm miscommunication, so I'll go back to the
> > beginning.
> > > >
> > > > I have an action "list".  It expects an parameter "tableID", so a
link
> > to it
> > > > looks like "http://host/app/list.do?tableID=foo", and if things are
> > > > successful, returns a page with a list of items that depend on the
> > tableID.
> > > > For each item, there is a link generated for action "blue" that
> > specifies
> > > > two parameters: tableID & itemID
> > > > (http://host/app/blue.do?tableID=foo&itemID=xyzzy).
> > > >
> > > > No problem.
> > > >
> > > > The action "blue" requires the two parameters "tableID" and
"itemID".
> > Under
> > > > certain circumstances, the results of the action blue require that
> > > > "list.do?tableID=foo" be "forwarded".  Struts doesn't seem to
provide a
> > way
> > > > to handle this last case.  If it does, I don't understand it.
> > > >
> > > > David
> > > > ----- Original Message -----
> > > > From: "Ted Husted" <husted@apache.org>
> > > > To: <struts-user@jakarta.apache.org>
> > > > Sent: Sunday, August 26, 2001 7:14 PM
> > > > Subject: Re: Dynamic forwardings...
> > > >
> > > > > Typically, there would be a finite number of inputs, and you could
> > have
> > > > > a logical forward for each one.
> > > > >
> > > > > The ActionMappings form an API for the legal entry points to the
> > > > > application.
> > > > >
> > > > > Usually, the only thing that is truly dynamic is a reference into
a
> > data
> > > > > source, to look something up. In that case, the link tag can take
one
> > or
> > > > > more dynamic parameters, based on the collection of beans used to
> > write
> > > > > it.
> > > > >
> > > > > In that case, the action usually gets the parameters from the
request,
> > > > > and uses them to look up whatever is required.
> > > > >
> > > > > David Corbin wrote:
> > > > > >
> > > > > > I'm definately talking about "forward", but my "whatever" value
is
> > > > dynamic.
> > > > > > It's based on input (a parameter) into the action.  I don't
yet
> > > > understand
> > > > > > the best solution for that.
> > > > > >
> > > > > > ----- Original Message -----
> > > > > > From: "Ted Husted" <husted@apache.org>
> > > > > > To: <struts-user@jakarta.apache.org>
> > > > > > Sent: Sunday, August 26, 2001 2:56 PM
> > > > > > Subject: Re: Dynamic forwardings...
> > > > > >
> > > > > > > For a forward, you just put in an encoded query string
for the
> > path:
> > > > > > >
> > > > > > >      <forward name="itemAdd"
> > > > > > >           path="/do/item/Add?code=whatever"/>
> > > > > > >
> > > > > > > For an action mapping, you can use the parameter property
> > > > > > >
> > > > > > >             <action
> > > > > > >                 path="/do/item/Add"
> > > > > > > ...
> > > > > > >                 parameter="add">
> > > > > > >             </action>
> > > > > > >
> > > > > > > and have the action check for the code there
> > > > > > >
> > > > > > > String code = mapping.getParameter();
> > > > > > >
> > > > > > >
> > > > > > > David Corbin wrote:
> > > > > > > >
> > > > > > > > I've got a an action "add", which requires a an argument
"code".
> > > > > > > > One (at least) of the possible forwards needs to specify
this
> > "code"
> > > > on
> > > > > > the
> > > > > > > > forward URL.
> > > > > > > >
> > > > > > > > How can I do that?
> > > > > > > >
> > > > > > > > Thanks
> > > > > > > > David Corbin
> > >
> > >
>
>


Mime
View raw message