我需要从一个action传递参数到另一个action,例如跟踪一个事件。
最好的方法是什么?
我不想使用会话参数。谢谢。
我需要从一个action传递参数到另一个action,例如跟踪一个事件。
最好的方法是什么?
我不想使用会话参数。谢谢。
假设您在服务器端正在执行某个操作,并希望使用一些参数调用另一个操作。
您可以使用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>
你实际上要将一个操作参数值从一个操作传递到另一个操作。
只需包含名称相同的bean变量。你将在接收操作(receiver action)上接收哪个参数。
<action name="ForwardAction" class="...">
<result name="success" type="chain">ReceiverAction</result>
</action>
ForwardAction参数将被转发到ReceiverAction。您可以使用它。 但是在两个操作中都包含相同的bean名称。
如果您打算在ReceiveAction中接收userid,则应在两个操作中都包含它。
这应该在两个操作中都存在。
private int userid;
public void setUserid(int id){
this.userid = userid;
}
public int getUserid(){
return userid;
}
在Struts核心标签中使用url标签,示例如下:
<s:url var="idurl" action="EditEnterprise">
<s:param name="enterpriseId">
<s:property value="enterpriseId" />
</s:param>
</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>
实际上,在Struts2中可以利用作用域和servletConfig拦截器,自动弹出Action上下文参数(请求/会话等)。
在Struts 2.1.8.1中无法正常工作。升级到Struts 2.2.1后一切正常。在任何地方都没有找到关于此的说明。 - grefab