日期:2014-05-20  浏览次数:20886 次

Struts2 result type="chain" 问题
struts.xml中 import了多个xml文件。

其中一个xml文件的内容是这样的
/项目名称/strutscofingxml/res/resource.xml
XML code
<action name="shopContent" class="shopContentAction" method="addProduct">
                          <result name="input" type="chain">
                <param name="actionName">chlResource</param>
                <param name="namespace">/res</param><!--
            /res/chlResource.action?strshopMainId=1&amp;type=0
            --></result>
        </action>


另外一个xml文件内容是这样的
/项目名称/strutsconfigxml/aaaa/res.xml
XML code
<action name="chlResource" class="chlResourcesAction" method="execute">
            <result name="success">
                /myleyuan/manager/Management_Add_Goods.jsp
            </result>
        [color=#FF9900]    <result name="input">
                /myleyuan/manager/Management_Add_Goods.jsp
            </result>[/color]
        </action>


这两个xml文件不再同一个目录中, 从一个xml引用另一个xml的action 使用chain连接是我这样写的吗?
为什么没有进入chlResource 里面的方法执行呢? 而是直接找了input而已!?? 希望大家能帮我出出主意!!

------解决方案--------------------
<result name="input" type="redirect">XXX!chlResource.action</result>
这样试试
------解决方案--------------------
LZ,想执行chlResource请求的execute方法吗?

如果是的话,是想通过shopContent请求的
<result name="input" type="chain">还是<result name="success" type="chain">执行。


按照楼主的配置,最终会执行到/myleyuan/manager/Management_Add_Goods.jsp
------解决方案--------------------
没有办法,只能直接找到input。
------解决方案--------------------
想执行execute,必须在chlResource请求中的input中的type="chain"。


注:

LZ的配置只能走input,不走execute方法,是struts2框架自己处理的。如果想走execute方法,在第二个请求中的input中在chain。
------解决方案--------------------
出错了,struts2会直接找jsp页面来显示吧。
------解决方案--------------------
学习...
------解决方案--------------------
你说的是不是这个意思:加入:
 <package name="a" extends="struts-default" namespace="/a">
<action name="A" class=".." method="A">
<result>/WEB-INF/pages/xxx.jsp</result>

</action>
</package>

在b命名空间调用a命名空间的方法:
<package name="b" extends="struts-default" namespace="/b">
<action name="B" class=".." method="B">
<result name="success" type="chain">
<param name="actionName">../a/B</param>
<result>
</action>
</package>

这种方式试试!不知道你说的是不是这个意思!


------解决方案--------------------
不好意思,这块的改改
<param name="actionName">../a/A</param>