在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上去。请问这是什么问题啊!非常郁闷!

解决方案 »

  1.   

    为什么不合成一个action呢 处理完后 没错就跳转到成功 否则就跳到失败页就可以了
      

  2.   


    报错显然是你配置不对。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 
      

  3.   


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

  4.   

    3楼兄弟是正解,不需要写.action,直接写action名字就可。多谢!