2016-05-25 3 views
1

Мне интересно, как я могу использовать функцию 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 о r INPUT действительно, но во всех остальных случаях я хочу, чтобы точная строка, которую я возвращаю, использовалась в качестве места перенаправления.

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

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

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

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

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

ответ

1

Имя: "*" Номер: Факс: Подвеска. Это особое значение для other имя результата, которое принимается, если нет соответствующего имени результата, если задано.

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

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