Перенаправление на действие по умолчанию в Struts 2 - PullRequest
4 голосов
/ 08 февраля 2010

У меня есть действие с пустой строкой для имени, определенного в корневом пространстве имен, и я хочу перенаправить на это действие другое действие, если найден определенный результат, но, похоже, он не работает.

Вот действие по умолчанию

<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 ]

11 голосов
/ 09 февраля 2010

Я думаю, что вы хотите использовать <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 теперь перенаправляет.

3 голосов
/ 15 марта 2010

Получали ли вы исключение NullPointerException, потому что параметр actionName пуст? Я взломал это, предоставив строку, которая оценивает в пустую строку:

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

Тем не менее, ищем более «правильное» решение ...

...