RedirectAction在URL中添加了一个额外的上下文名称,同时重定向到Struts.xml

时间:2016-08-20 20:33:52

标签: jsp redirect struts2

我正在尝试使用结果类型redirectAction将请求重定向到struts2中的另一个操作。

<action name="UpdateTrouserMeasurementAction" method="UpdateTrouserMeasurement"
        class="com.example.UserDetails.UpdateTrouserMeasurementAction">
        <result name="success" type="redirectAction">UserAccountDisplayAction</result>
        <result name="error">LoginCheck.jsp</result>
    </action>

它正在重定向到 UserAccountDisplayAction ,但在URL中添加了一个额外的上下文名称,如下所示:

http://www.example.com/Example/UserAccountDisplayAction

但它应该是:`http://www.example.com/UserAccountDisplayAction

所以我收到以下错误:

HTTP状态404 - /Example/Example/MyAccount.jsp

以下是我重定向的动作:

    <action name="UserAccountDisplayAction" method="execute"
        class="com.example.UserDetails.UserAccountDisplayAction">
        <result name="success">MyAccount.jsp</result>
        <result name="error">LoginCheck.jsp</result>
    </action>

我正在使用redirectAction来创建post + redirect + get场景,因为 UpdateTrouserMeasurementAction 会处理一个帖子请求。

以上操作位于相同的包元素中,如下所示: <package name="securePackage" namespace="/" extends="struts-default">

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的重定向格式可能不正确。也许它应该如下所示,但确切的语法可能取决于你的struts版本。此外,经过多年使用struts,我真的认为从行动转向行动是不好的做法。如果你想使用来自另一个动作的java代码,你应该改为子程序。

<action name="UpdateTrouserMeasurementAction" method="UpdateTrouserMeasurement"
    class="com.example.UserDetails.UpdateTrouserMeasurementAction">
    <result name="success" type="redirectAction">
       <param name="actionName">UserAccountDisplayAction</param>
    </result>
    <result name="error">LoginCheck.jsp</result>
</action>