【问题标题】:Can you use regular expressions in struts-config.xml?可以在struts-config.xml 中使用正则表达式吗?
【发布时间】:2011-02-04 23:20:42
【问题描述】:

我正在尝试将这两个 url 路由到不同的操作。我们正在使用 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 中唯一允许的类似正则表达式的字符是通配符(* 和 **),但我希望我错了。

【问题讨论】:

    标签: java struts struts-config


    【解决方案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 中轻松实现这一点。

    【讨论】:

    • 其实我发现可以在struts-config中使用正则表达式。它们并不完全按照您的预期工作,但它们确实有效。我必须创建一堆测试以确保当我编辑 struts-config 时它不会破坏我的站点。但在我们转向更新的框架之前,它似乎暂时保持一致。
    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 2015-03-21
    • 2013-05-23
    • 1970-01-01
    • 2012-08-28
    • 2011-02-06
    • 2021-06-20
    相关资源
    最近更新 更多