Struts2参数之间的动作

时间:2008-12-17 09:45:41

标签: java jsp struts2 parameters action

我必须将一个参数从一个动作传递给另一个动作,例如以保持事件的跟踪。

最好的方法是什么?

我不会使用会话参数。感谢

5 个答案:

答案 0 :(得分:11)

假设您在一个操作中是服务器端,并希望使用某些参数调用另一个操作。

你可以使用s:action标签来调用另一个动作,可能还有其他参数而不是原始动作:

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

您还可以使用带参数的标准struts-xml结果类型:

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

如果你想要一个客户端重定向,你必须使用适当的参数将url发送回客户端,并且可能使用一些javascript去那里。

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

答案 1 :(得分:1)

<td>
   <s:url id="url" action="Logging">
      <s:param name="m_userNameInAction"><s:property value="m_userNameInForm"/></s:param>
    </s:url>
    <s:a href="%{url}">English</s:a>
</td>

答案 2 :(得分:1)

在struts核心标记中使用url标记,示例如下:

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

答案 3 :(得分:1)

实际上,您将把一个动作参数值从一个动作传递给另一个动作。

只需包含同名的bean变量。您将在行动中接收哪个参数(接收者操作)。

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

ForwardAction参数将被转发到ReceiverAction。你可以用它。 但在两个动作中都包含相同的bean名称。

如果您打算以接收方式接收用户ID,

这应该是两个动作。

private int userid;

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

public int getUserid(){
     return userid;
}

答案 4 :(得分:0)

实际上,scope和servletConfig拦截器可以在struts2中使用,自动弹出动作上下文参数,(请求/会话等)