Redirect 重定向到Struts 2中的默认操作

Redirect 重定向到Struts 2中的默认操作,redirect,struts2,Redirect,Struts2,我有一个在根命名空间中定义的名称为空字符串的操作,如果找到某个结果,我想从另一个操作重定向到该操作,但它似乎不起作用 这里是默认操作 <action name="" class="com.example.actions.HomeAction"> <result name="success" type="freemarker">freemarker/home.ftl</result> </action> freemarker/home.f

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

这里是默认操作

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

freemarker/home.ftl
我在包的全局结果中定义重定向:

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

/
我试着去掉actionName参数,但不起作用。如果我为HomeAction输入一个名称,并在全局结果中按名称引用它,那么我假设问题在于重定向缺少操作名称


有什么想法吗?

我想你要做的是使用


freemarker/home.ftl
对不起…误读了问题:


尝试将
type=“redirectAction”
更改为
type=“redirect”
,我确信redirectAction现在是重定向的。

是否因为actionName参数为空而收到NullPointerException?我通过提供一个计算结果为空字符串的字符串来解决这个问题:

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

仍然在寻找一个更“正确”的解决方案,但是…

将type改为type=“redirect action”我正在使用struts 2.1.6,我读到在以前的版本中redirect action被切换为redirect action。我很好奇,有什么“好”的理由不给这个操作命名?例如,“默认”还是什么?我不认为使用没有名称的操作有任何好处。也许OP和我的问题一样:客户端希望使用
host/myApp/admin
访问,而不使用任何操作名称。嗯,这是一个有趣的解决方法。我也必须尝试一下。不,
redirect
用于URL,而
redirectAction
允许您直接引用操作名称。
<param name="actionName">${}</param>