action的配置中,有一个为"redirectAction”(重定向到一个Action)和chain(就是所谓的action请求链)的action类型
举个简单的例子:在请求完增加一条新闻信息之后,想直接跳转到查询列出所有新闻的action
增加的action
<action name="addNews" class="com.web.action.AddNewsAction">
<!--在AddNewsAction中直接请求查询Action-->
<result name="success" type="chain"> listNews </result>
<result name="input">addNews.jsp</result>
</action>
查询的action
<action name="listNews" class="com.web.action.ListNewsAction">
<result name="success" type="dispatcher">
<param name="location">news.jsp</param>
</result>
</action>
在增加完一条新闻信息以后,重新查询一遍新闻,但是如果查询里需要一些参数
那么要传递的参数在第一个action有getter和setter,在第2个action也要有才能正常传递,否则参数不能传递到第2个action中去
顺便说一下struts2的action type:
chain 用来处理Action链
dispatcher 用来转向页面,通常处理JSP
redirect 重定向到一个URL
redirectAction(或redirect-action) 重定向到一个Action
redirect:重定向,新页面无法显示Action中的数据,因为底层调用response.sendRedirect("...")方法,无法共享请求范围内的数据,参数与dispatcher用法相同;
chain:将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字,method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间
redirect-action:重定向到另一个Action,参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action 中,可以在Result标签中添加 <param name=”b”>${a} </param>,这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作,注意如果值是中文,需要做一些编码处理,因为Tomcat默认是不支持URL直接传递中文的!
楼主,明白了吧,如果还不明白上网查资料!!·
温馨提示:内容为网友见解,仅供参考