Jakarta ee 将请求链接到另一个命名空间上的struts操作

Jakarta ee 将请求链接到另一个命名空间上的struts操作,jakarta-ee,struts2,struts,struts-config,Jakarta Ee,Struts2,Struts,Struts Config,在我的struts应用程序中,我有两个名为“a”和“b”的名称空间,并为每个名称空间定义了操作“process” 现在,在某些情况下,我必须将请求从命名空间“a”中的操作“process”链接到命名空间“b”中的操作“process”。但是,我不知道如何在struts.xml中实现这一点。如何将这些请求链接到另一个命名空间 我的struts配置如下所示: <package name="testa" extends="struts-default, json-default" namespa

在我的struts应用程序中,我有两个名为“a”和“b”的名称空间,并为每个名称空间定义了操作“process”

现在,在某些情况下,我必须将请求从命名空间“a”中的操作“process”链接到命名空间“b”中的操作“process”。但是,我不知道如何在struts.xml中实现这一点。如何将这些请求链接到另一个命名空间

我的struts配置如下所示:

<package name="testa" extends="struts-default, json-default" namespace="/a">
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseA">
        <result type="chain" name="return_b">
            <param name="actionName">b/process</param>
        </result>
        <result name="success">completea.jsp</result>
    </action>
</package>
<package name="testb" extends="struts-default, json-default" namespace="/b">
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseB">        
        <result name="success">completeb.jsp</result>
    </action>
</package>

b/过程
completea.jsp
completeb.jsp
使用
内部
键入结果。您可以在结果中查看有关此类型的官方文档,以查看有关它的更多信息

就你而言:

<package name="testa" extends="struts-default, json-default" namespace="/a">
    <action name="process" class="com.khoinguyen.action.ProcessAction" method="handleResponseA">
        <result type="chain" name="return_b">
             <param name="namespace">/b</param>
             <param name="actionName">process</param>
        </result>
        <result name="success">completea.jsp</result>
    </action>
</package>

/b
过程
completea.jsp

请使用result
type=“redirectAction”
而不是result
type=“chain”

它符合您的建议,但是在方法handleResponseB中,对应于链接后的操作,我无法通过方法
ServletActionContext.getActionMapping().getNamespace()获取命名空间它总是返回“/”,而期望值是“/b”of@KhoiNguyen我以前遇到过这个问题。尝试以下操作:使用
ServletActionContext.getActionMapping().getName()
检查命名空间的名称是否在操作名称内。名称始终返回“process”值,因为它的操作名称相同,只是命名空间不同