I don't think that you could rely on the ActionForwards being returned in
the same order each time, so forwarding to the first one found would not be
guaranteed to work.

If we allowed anonymous or default ActionForwards would that work?
  <action path="/myAction"
          type="o.a.s.actions.SuccessAction">
    <forward path="/myPage.jsp">
  </action>

Any forward without a name, would be stored under a default key (defined in
Globals). You could use null here, but I think it would be better to use an
actual value.

You'd probably need to add a method such as getDefaultForward() to retrieve
it.

I could see this being of use in more than just SuccessAction (or
equivalent). Quite often you're either forwarding to a "success" destination
or returning to the input destination, so anonymous forwards would save a
bit of work.

I'll go have a play with this and see what I come up with.

Steve


> -----Original Message-----
> From: David Graham [mailto:[EMAIL PROTECTED]
> Sent: August 8, 2003 4:51 PM
> To: Struts Developers List
> Subject: Re: SuccessAction (was RE: Addition of two new actions)
>
>
> --- Steve Raeburn <[EMAIL PROTECTED]> wrote:
> > OK, I'm back. Now where were we...
> >
> > What you're suggesting is this?
> >
> >   <action path="/myAction"
> >           type="o.a.s.actions.SuccessAction">
> >     <forward name="success" path="/myPage.jsp">
> >   </action>
> >
> >   <action path="/myOtherAction"
> >           type="o.a.s.actions.SuccessAction"
> >           parameter="oops">
> >     <forward name="oops" path="/myPage.jsp">
> >   </action>
> >
> > I honestly don't see the value in the second method. You've just added a
> > parameter to tell the action which forward to select when there is only
> > one
> > possible choice. You've also got two actions which do exactly the same
> > thing, but are configured differently.
>
> That's a good point which raises another question.  If the goal of
> SuccessAction is to forward to the one defined <forward> instance, why
> must we name it "success" or "oops"?  Why can't SuccessAction call
> mapping.findForwards() and return the first forward it finds?  Then we
> don't need to use the parameter attribute nor do we need to declare that
> "success" is the one right name for the forward.
>
> However, that makes SuccessAction a bit silly.  If it's just going to
> forward to the first <forward> it finds, why not change the way we define
> forwards to be more natural and flexible?  What I think we're seeing here
> is that we've outgrown our ActionForward declarations and need some new
> ones.  I'm fine with adding a SuccessAction but would really like to see
> us discuss future possibilities in this area.
>
> >
> > My concern is that adding the parameter makes the use of the action a
> > little
> > less of a no-brainer (sometimes a *little* more complexity is all it
> > takes).
>
> In its proposed default state SuccessAction would still be a complete
> no-brainer.
>
> >
> > I would be grateful if you could give an illustration of an example
> > where
> > "success" couldn't be used. Most other actions can be identified as
> > having a
> > success or fail outcome (or something in between). To my mind this is an
> > action where the only possible outcome is success, so I can't see why
> > the
> > name would cause you so much trouble. Even if you're forwarding to an
> > error
> > page, the *action* is still successful.
>
> I've never said that "success" is a poor term or isn't used in most cases.
>  I just don't think Struts should dictate the names of forwards to users.
> That is there choice and should be configurable.
>
> We all know that Action chaining isn't generally a smart move but
> sometimes it works out ok.  Consider a RegisterAction that forwards to a
> LoginAction to login a user immediately after they register.
> RegisterAction might want to name its success forward "login".
> Admittedly, this isn't directly applicable to our SuccessAction situation
> but it does show that "success" isn't *always* the correct term.  Also,
> not every Struts developer speaks english and may choose forward names in
> their native language.
>
> >
> > Please reconsider whether having the flexibility of adding the parameter
> > is
> > really necessary. I think that in the vast majority of cases it isn't
> > and
> > for the minority a custom action would be an option.
> >
> > However, if you're *really* set on having the parameter option then
> > let's go
> > with SuccessAction, with the forward name being supplied by the
> > parameter
> > and defaulting to "success" if none is supplied. Ok?
> >
> > But, only if you really, really, really insist ;-)
>
> I'd like to get your thoughts (and others) on my proposal at the beginning
> of this message.  In short, we wouldn't use the parameter attribute nor
> would we define "success" as the only correct forward name.  SuccessAction
> would forward to the first <forward> that's defined for it.
>
> I believe SuccessAction fills a current gap but is probably a temporary
> solution until we have a more unified/flexible forward declaration syntax.
>  How "temporary" it is depends on how motivated we are to change it :-).
>
> David
>
> >
> > Steve



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

Reply via email to