Как использовать все подстановочные знаки в качестве результата перенаправления в Struts2

Мне интересно, как я могу использовать подстановочный знак Struts2 для перенаправления пользователей к другому действию на основе возвращаемого значения:

Struts.xml:

    <action name="menu" class="a.b.c.d.e.f.actions.SecureMenuAction" method="prompt" >
        <result name="success" type="tiles">.clf.sm</result>
        <result name="input" type="tiles">.clf.smLevel3</result>
        <result name="*" type="redirectAction">{1}</result>
    </action>

Действие:

String redirectString;
// --- code --- \\
return redirectString;

В некоторых случаях возвращают результат SUCCESS или же INPUT допустимо, но во всех других случаях я хочу, чтобы точная строка, которую я возвращаю, использовалась как место перенаправления.

Если я заменю свой struts.xml на:

<result name="test*" type="redirectAction">{1}</result>

Тогда {1} будет заменен на testс последующим правильным действием, на которое я хочу направить пользователя.

Однако, если я просто использую * как мое имя результата, то он не заменит {1} вообще (как будто подстановочный знак не может быть использован таким образом).


Кто-нибудь знает, как я могу заставить это работать, используя то, что доступно в Struts2 (2.3.16.2)?

1 ответ

Решение

Название результата "*" не подстановочный знак Это специальное значение для другого имени результата, которое берется, если не найдено подходящего имени результата, если оно задано.

Если вы хотите перенаправить действие, вам следует указать метод получения имени действия и использовать динамический параметр в конфигурации результатов.

<action name="menu" class="a.b.c.d.e.f.actions.SecureMenuAction" method="prompt" >
    <result name="success" type="tiles">.clf.sm</result>
    <result name="input" type="tiles">.clf.smLevel3</result>
    <result name="*" type="redirectAction">${redirectString}</result>
</action>

Другие вопросы по тегам