Struts2 parameters between actions

53,874

Solution 1

Assuming you are serverside within one action and wishing to invoke another action with some parameters.

You can use the s:action tag to invoke another action, possibly with additional/other parameters than the original action:

    <s:action name="myAction"  ignoreContextParams="true" executeResult="true">
        <s:param name="foo" value="bar"/>
    </s:action>

You can also use a standard struts-xml result type with a parameter:

<result name="success" type="redirect" >
      <param name="location">foo.jsp?foo=${bar}</param>
      <param name="parse">true</param>
      <param name="encode">true</param>
 </result>

If you want a client side redirect you have to send an url back to the client with the proper parameters, and maybe use some javascript to go there.

        <s:url action="myAction" >
            <s:param name="foo" value="bar"/>
        </s:url>

Solution 2

Use url tag in the struts core tags, sample is given below:

                <s:url var="idurl" action="EditEnterprise">
                    <s:param name="enterpriseId">
                        <s:property value="enterpriseId" />
                    </s:param>
                </s:url> 

Solution 3

Actually you are going to pass your one action parameter value from one action to another action.

simply include bean variable with same name. which parameter you are going to receive on action(receiver action).

<action name="ForwardAction" class="...">
       <result name="success" type="chain">ReceiverAction</result>
</action>

ForwardAction parameter will be forwarded to ReceiverAction. you can use it. but include same bean name in both actions.

if you are going to receive userid in receiveaction means.,

This should be in both actions.,

private int userid;

public void setUserid(int id){
     this.userid = userid;
}

public int getUserid(){
     return userid;
}
Share:
53,874
JuanDeLosMuertos
Author by

JuanDeLosMuertos

Software engineer

Updated on June 18, 2020

Comments

  • JuanDeLosMuertos
    JuanDeLosMuertos almost 4 years

    I have to pass some parameter from an action to another action,for example to keep trace of an event.

    What is the best way to do that?

    I would not use session parameters. Thanks

  • grefab
    grefab over 13 years
    I had a lot of trouble figuring this out: <s:action ...> <s:param ... /> </s:action> does not work in Struts 2.1.8.1. After upgrading to Struts 2.2.1 everything is okay. Haven't found a note on that anywhere.