关于Struts2配置两个Action直接跳转问题

msn365 2012-05-15 05:15:15
在Struts2中有两个Action, Action1和Action2. 现在页面需要先提交到Action1中,然后Action1再forward到Action2中。Action1处理请求(调用数据库),Action2负责展示下一个页面,并且需要用到Action1处理完的结果(有可能是错误信息)。Google了一下,说如果两个Action想共享相互的数据,需要设置type="chain",所以我配置两个Action如下:

<action name="Action1" class="com.abc.Action1">
<result name="success" type="chain">Action2.action</result>
</action>

<action name="Action2" class="com.abc.Action2">
<result name="success">/jsp/abc.jsp</result>
</action>

现在在Action1 -> Action2的过程中报错:
There is no Action mapped for namespace / and action name Action2.action. - [unknown location]

但是当把type="chain"设置成type="redirect"的时候就可以转到Action2上去。

请问这是什么问题啊!非常郁闷!
...全文
240 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
msn365 2012-05-15
  • 打赏
  • 举报
回复
3楼兄弟是正解,不需要写.action,直接写action名字就可。多谢!
linwz520 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 msn365 的回复:]
在Struts2中有两个Action, Action1和Action2. 现在页面需要先提交到Action1中,然后Action1再forward到Action2中。Action1处理请求(调用数据库),Action2负责展示下一个页面,并且需要用到Action1处理完的结果(有可能是错误信息)。Google了一下,说如果两个Action想共享相互的数据,需要设置type="chain",所以我配……
[/Quote]

配置文件中去掉 .action,只写名称就OK
<action name="Action1" class="com.abc.Action1">
<result name="success" type="chain">Action2</result>
</action>

昨日凡阳 2012-05-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
在Struts2中有两个Action, Action1和Action2. 现在页面需要先提交到Action1中,然后Action1再forward到Action2中。Action1处理请求(调用数据库),Action2负责展示下一个页面,并且需要用到Action1处理完的结果(有可能是错误信息)。Google了一下,说如果两个Action想共享相互的数据,需要设置type="chain",所以我配……
[/Quote]

报错显然是你配置不对。chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:

<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
处于chain中的action属于同一个http请求,共享一个ActionContext
Epiphone 2012-05-15
  • 打赏
  • 举报
回复
为什么不合成一个action呢 处理完后 没错就跳转到成功 否则就跳到失败页就可以了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧