2010-02-08 32 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