What you are doing will not work - at least, not the way you are doing it.
You are trying to modify the ActionForward instance that is owned by Struts,
and calling setPath() on that instance will result in an
IllegalStateException.

You need to create your own ActionForward instance, instead of trying to
modify Struts' one. You can do that with something like this:

    ActionForward goto = mapping.findForward( "success" );
    String path = ...; // Put together your new path
    ActionForward myGoto = new ActionForward(path, goto.getRedirect());
    return myGoto;

--
Martin Cooper


"Glanville, Jay" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
I'm trying to solve a problem, but I'm not sure my solution is the best
way.  Basically, I want to set a parameter on a forward within the
action's execute.

I'm in my action's execute method.  I've just successfully performed
some work, and I now want to forward/redirect to the next page.  So,
I've got some code that looks like this:

   public ActionForward execute(ActionMapping.....) {
      // do some work
      ActionForward goto = mapping.findForward( "success" );
      return goto;
   }

With an action mapping that looks like this:

   <action
      path="/EntrySave"
      type="com.package.EntrySaveAction"
      name="EntryForm"
      validate="true"
      input="/Entry.do">
      <forward name="success" redirect="true" path="/Container.do"/>
      <forward name="failure" redirect="false" path="/Entry.do" />
   </action>

Basically, if I left the EntrySaveAction.execute do what's doing right
now, then upon successful completion, it would redirect to
"/Container.do".  However, what I want it to do is redirect to
"/Container.do?id=45", where 45 is the id of the container that I want
to go to.  The value of "45" is dynamic, and is know at the time of the
EntrySaveAction.execute command.

The way I'm currently doing it is something like this:

   public ActionForward execute(ActionMapping.....) {
      // do some work
      ActionForward goto = mapping.findForward( "success" );
      String path = goto.getPath();
      path += "?id=" + container.getId();
      goto.setPath( path );
      return goto;
   }

Is this the correct way to do this?  Is there a better way?

Thanks in advance

JDG


--
Jay Glanville




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

Reply via email to