我正在尝试将这两个网址路由到不同的操作。我们正在使用Struts 1.2:
/ ABC-DEF /产品
/ 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中允许的唯一正则表达式字符似乎是通配符(*和**),但我希望我错了。
答案 0 :(得分:1)
不幸的是,你对Struts 1.x中的通配符是正确的......在*
之后你不能有任何东西。见documentation section 4.10。这是Struts 1.x的许多限制之一...被授予,它是最先工作的Java MVC框架之一(现在显然有一些问题),这就是我决定切换到Spring MVC 3.x的原因,因为它允许我做更像Rest的URI,例如:
/abc/product/{productId}/part/{partId}
我只是看不出如何在Struts 1.x中轻松实现这一点。