在Struts 2中重定向到默认操作

时间:2010-02-08 12:05:54

标签: redirect struts2

我有一个带有空字符串的操作,用于在根命名空间中定义的名称,如果找到某个结果,我想从另一个操作重定向到该操作,但它似乎不起作用。

这是默认操作

<action name="" class="com.example.actions.HomeAction">
    <result name="success" type="freemarker">freemarker/home.ftl</result>
</action>

我正在定义包的全局结果中的重定向:

<global-results>
    <result name="sendToRouting" type="redirectAction">
        <param name="actionName"></param>
        <param name="namespace">/</param>
    </result>
</global-results>

我已经尝试取出actionName参数,但这不起作用。如果我为HomeAction命名并在全局结果中按名称引用它,那么我假设问题是缺少重定向的动作名称。

有什么想法吗?

2 个答案:

答案 0 :(得分:11)

我认为你想要做的是使用<default-action-ref />

<package name="home" namespace="/" extends="struts-default">
    <default-action-ref name="home" />

    <action name="home" class="com.example.actions.HomeAction">
        <result name="success" type="freemarker">freemarker/home.ftl</result>
    </action>

</package>

抱歉......误读了这个问题:

尝试将type="redirectAction"更改为type="redirect",我相当确定redirectAction现在是重定向。

答案 1 :(得分:3)

您是否收到NullPointerException,因为actionName参数为空?我通过提供评估到空字符串的字符串来解决这个问题:

<param name="actionName">${}</param>

仍在寻找更“正确”的解决方案......