我必须将一个参数从一个动作传递给另一个动作,例如以保持事件的跟踪。
最好的方法是什么?
我不会使用会话参数。感谢
答案 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中使用,自动弹出动作上下文参数,(请求/会话等)