我必须将一些参数从一个动作传递给另一个动作,例如跟踪一个事件。
最好的方法是什么?
我不会使用会话参数。谢谢
假设您在一个操作中处于服务器端并希望使用一些参数调用另一个操作。
您可以使用 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>
<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>
在struts核心标签中使用url标签,示例如下:
<s:url var="idurl" action="EditEnterprise">
<s:param name="enterpriseId">
<s:property value="enterpriseId" />
</s:param>
</s:url>
实际上,您要将一个动作参数值从一个动作传递到另一动作。
只需包含具有相同名称的 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;
}
实际上,可以在 struts2 中使用范围和 servletConfig 拦截器,以自动弹出操作上下文参数(请求/会话等)