如何在Struts2中将整个通配符值用作重定向结果

时间:2016-05-25 19:08:13

标签: java struts2 wildcard-mapping

我想知道如何使用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;

在某些情况下,返回结果SUCCESSINPUT有效,但在所有其他情况下,我希望我返回的确切字符串用作重定向位置。

如果我将struts.xml替换为:

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

然后{1}将替换为test,然后是我希望用户定向的正确操作。

但是,如果我只使用*作为我的结果名称,那么它根本不会替换{1}(就好像通配符功能不能像这样使用)。

有没有人知道如何使用Struts2(2.3.16.2)中提供的功能来使用它?

1 个答案:

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