Redirect
一次request建立一个值栈(ValueStack)。
1.当时服务端跳转时,客户端发送请求,服务器找到UserAction,建立一个值栈记录传入的参数,服务端发现result是dispatcher方式,然后跳转到另一个action,可以将数据直接从值栈中取出。
2.当客户端跳转时,客户端发送请求,服务端找到UserAction,建立一个值栈,将参数保存到值栈中,服务端发现result是redirect方式,发送信息到客户端。客户端重新出request请求到需要跳转的action,同时新建立一个值栈。新建的值栈中没有任何数据,需要跳转的action不能从中取值。问题出现了!!!
客户端跳转获取参数方法
1.发现请求是redirect
${} 表达式获取值栈的参数。
<package name="user" extends="struts-default" namespace="/user">
<action name="user" class="com.struts2.user.action.UserAction">
//跳转的action用t保存type参数。
<result type="redirect">/user_success.jsp?t=${type}</result>
</action>
</package>
2.传入的参数值
type值为1
<a href="user/user?type=1">传参数</a>
3.重定向界面获取参数
从ActionContext的parameters属性中获取传入参数的值。
from actioncontext:<s:property value="#parameters.t"/>