2016-05-25 1 views
1

Ich frage mich, wie ich die Struts2 Wildcard-Funktion Benutzer auf dem Rückgabewert basierend auf eine andere Aktion umleiten kann:Wie in Struts2 den gesamten Platzhalter Wert als Redirect Ergebnis verwenden

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> 

Aktion:

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

In einigen Fällen Rücker SUCCESS o r INPUT ist gültig, aber in allen anderen Fällen möchte ich die genaue Zeichenfolge, die ich zurückgeben als Umleitungsort verwendet werden.

Wenn ich meine struts.xml ersetzen:

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

Dann wird die {1} mit test ersetzt werden, gefolgt von der richtigen Aktion ich die Benutzer will gerichtet.

Wenn ich jedoch einfach * als mein Ergebnisname verwende, dann wird es die {1} überhaupt nicht ersetzen (als ob die Wildcard-Funktion nicht so verwendet werden kann).


Kennt jemand eine Weise, die ich dies mit zu arbeiten, was in Struts2 verfügbar ist (2.3.16.2)?

Antwort

1

Ergebnis Name "*" ist nicht ein Platzhalter. Es ist eine spezielle Bedeutung für andere Ergebnisname, der genommen wird, wenn kein übereinstimmender Ergebnisname angegeben wird.

Wenn Sie die Aktion umleiten möchten, sollten Sie einen Getter für den Aktionsnamen angeben und den dynamischen Parameter in der Ergebniskonfiguration verwenden.

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

Verwandte Themen