2

我正在尝试将这两个 url 路由到不同的操作。我们正在使用 Struts 1.2:
/abc-def/products
/abc-def

我试着把这个动作放在第一位:

<action path="/abc*/products" type="com.business.exampleAction">
    <forward name="success" path="/go"/>
</action>

然后是这个:

<action path="/abc*" type="com.business.differentExampleAction">
    <forward name="success" path="/goElsewhere"/>
</action>

但它总是转到第二个动作(在这种情况下为 differentExampleAction)。我已经为 * 尝试了各种迭代,比如 .* 或 (.*),但还没有找到任何真正有效的方法。

根据我的阅读,struts-config 中允许的唯一类似正则表达式的字符似乎是通配符(* 和 **),但我希望我错了。

4

1 回答 1

1

不幸的是,您对 Struts 1.x 中的通配符是正确的...在*. 请参阅文档第 4.10 节。这是 Struts 1.x 的众多限制之一......当然,它是第一个有效的 Java MVC 框架之一(现在显然有一些问题),这就是我决定切换到 Spring MVC 3.x 的原因,因为它允许我做更多类似 Rest 的 URI,例如:

/abc/product/{productId}/part/{partId}

我只是不明白如何在 Struts 1.x 中轻松实现这一点。

于 2011-02-05T01:07:19.623 回答