我想知道如何使用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)中提供的功能来使用它?
答案 0 :(得分:1)
结果名称"*"
不是通配符。它是其他结果名称的特殊含义,如果没有匹配的结果名称,则会被采用。
如果要重定向操作,则应为操作名称提供getter,并在结果配置中使用dynamic参数。
<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>