Solved

Pass parameters to Struts forward

Posted on 2003-12-19
6
20,463 Views
Last Modified: 2012-06-27
I need to pass some parameters to my forward,like that:

            www.something/myapp/newslist.do?sysId=4

here is my action delaration:

        <action path="/newscreate"
              type="NewsCreateAction"
              name="newsForm">
              <forward name="success" path="/newslist.do"/>
        </action>

       
        <action path="/newslist"
              type="NewsListAction">
              <forward name="success" path="/NewsSystem/newslist.jsp"/>
        </action>

and here is my forward code in NewsCreateAction:
        //I want to add some parameters here
      // Forward control to the specified success URI
            return (mapping.findForward("success"));

...i did'nt find this in Struts docs, and i'm too lazy today
to dig Struts sources, it's a friday ;)

Crossposted in JSP.
0
Comment
Question by:dualsoul
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 92

Expert Comment

by:objects
ID: 9975398
try setting redirect to false in your forward:
<forward name="success" path="/NewsSystem/newslist.jsp" redirect="false"/>
0
 
LVL 35

Accepted Solution

by:
TimYates earned 500 total points
ID: 9975881
Hiya!

I was trying to do this too...with no  success...what I ended up doing was (I haven't got my source code here at home, so this will  be approximate):

    ActionMapping success = mapping.findForward("success") ;
    success = new ActionMapping( success.getPath() + "?sysid=" + sysid, success.getRedirect() ) ;
    return success ;

Hope that helps you with a solution, and I hope you find a nicer way to do it, as then I will use that way too ;-)

Tim
0
 
LVL 15

Author Comment

by:dualsoul
ID: 9977065
>  try setting redirect to false in your forward:
if it's false, i even can't point my browser to    ......../newslist.do?sysId=4

ohhh....it seems i need to examine Struts sources...hm...%-/
strange...so simple thing, and no support for it...
0
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
LVL 15

Author Comment

by:dualsoul
ID: 9977138
hm...yeah...there no anything about it in Struts ;(
Tim, i believe you mean ActionForward not ActionMapping :)
I get the same answer from JSP guys.
So, i write simple wrapper class for it, like this :
................................
import java.util.*;
import org.apache.struts.action.*;

/**
*  Encupsulates parameters for ActionForward.
*/
public class ForwardParameters{
      private Map params=new HashMap();
      
      public ForwardParameters add(String paramName,String paramValue){
            params.put(paramName,paramValue);
            return this;
      }
      
      /**
      * Add parameters to provided ActionForward
      * @param forward ActionForward to add parameters to
      * @return ActionForward with added parameters to URL
      */
      public ActionForward forward(ActionForward forward){
            StringBuffer path=new StringBuffer(forward.getPath());
            Iterator iter=params.entrySet().iterator();
            if(iter.hasNext()){
               //add first parameter, if avaliable
                  Map.Entry entry=(Map.Entry)iter.next();
                  path.append("?"+entry.getKey()+"="+entry.getValue());                  
               //add other parameters      
                  while(iter.hasNext()){
                        entry=(Map.Entry)iter.next();
                        path.append("&"+entry.getKey()+"="+entry.getValue());
                  }
            }
            
            return new ActionForward(path.toString());
      }      
}
.................................

and my life become much easier now :):
........................
            return new ForwardParameters().add("sysId","4")
                                          .add("id","5")
                                          .add("some","value")
                                          .forward(mapping.findForward("success"));
......................

Thans Tim.
0
 
LVL 35

Expert Comment

by:TimYates
ID: 9984065
Woo!  Nice wrapper :-)

I think  I'll use that too :-)  Woo!

Good luck!!

Tim
0
 
LVL 15

Author Comment

by:dualsoul
ID: 9984225
have a nice week :)
0

Featured Post

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:

690 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question