Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Pass parameters to Struts forward

Posted on 2003-12-19
6
Medium Priority
?
20,822 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
  • 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 2000 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
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
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

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

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

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
After being asked a question last year, I went into one of my moods where I did some research and code just for the fun and learning of it all.  Subsequently, from this journey, I put together this article on "Range Searching Using Visual Basic.NET …
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …
Suggested Courses

927 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