2010-02-08 64 views
4

我对根名称空间中定义的名称有一个空字符串操作,如果找到某个结果,我想从另一个操作重定向到该操作,但似乎没有上班。重定向到Struts 2中的默认操作

这里的默认操作

<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命名并在全局结果中按名称引用它,所以我假设问题是缺少重定向的操作名称。

有什么想法?

+0

更改类型为type =“重定向行动” – 2010-02-09 05:30:55

+0

我正在使用struts 2.1.6,我读过重定向动作在以前的版本中切换到了redirectAction。 – 2010-02-10 11:05:38

+0

只是好奇,可能是一个“好”的理由,不只是给行动一个名字?例如,“默认”或什么?我没有看到使用没有名字的动作的优势。 – user1884155 2014-06-08 11:39:15

回答

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现重定向。

+0

不,重定向是针对URL的,而'redirectAction'则允许您直接引用动作名称。 – FaithReaper 2016-02-24 12:43:51

3

您是否因为actionName参数为空而得到NullPointerException?我砍死解决此提供一个字符串,它评估为空字符串:

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

还在寻找一个更“正确”的解决方案,但...

+0

嗯,这是一个有趣的工作。我必须试一试 – 2010-03-15 10:03:16

+0

其实这是你问题的正确答案 – 2013-02-11 16:06:02