【问题标题】:Struts 2 Action Mapping with PrefixBasedActionMapper使用 PrefixBasedActionMapper 的 Struts 2 动作映射
【发布时间】:2012-07-07 03:13:03
【问题描述】:

我正在尝试更改 Struts 2 中的 url 映射方式。

我希望能够设置一个类似 www.site.com/login.action 的网址,并让它看起来像 www.site.com/action/login

我知道我可以使用 struts.xml 常量删除操作扩展

<constant name="struts.action.extension" value="" />

我用以下内容更新了 web.xml:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/action/*</url-pattern>
</filter-mapping>

这给了我想要将所有 /action/ url 路由到 Struts 的结果。问题是 Struts 没有意识到 url 的动作部分实际上是动作扩展......当然我不希望 Struts 知道这一点。因此,在我的所有 Struts.xml 动作映射中,我必须在命名空间甚至动作名称中包含 /action。

我已经看过 PrefixBasedActionMapper 类,我想知道我是否走在正确的轨道上来完成我想要做的事情......或者可能不是......也许甚至不可能。

有人对此有所了解吗?

【问题讨论】:

  • 我不明白,没有动作扩展,你把url的动作部分识别为扩展是什么意思?为什么需要?
  • 我感觉你是在告诉我们你想要做什么,而不是你想要什么。我绝对可以理解为什么您不想要任何操作扩展(它们毫无意义),但是您为什么想要 /action 部分?为什么不 www.site.com/login 或 www.site.com/account/login 或更有意义的东西?
  • 我需要在 url 中添加某种指示符(我认为),以便 tomcat 知道 struts 需要处理这个 url。我们有很多其他的 url,struts 不需要处理。通常你为此使用一个动作扩展,b/c struts 知道你不必将扩展添加到所有动作映射、url 标记等中。我希望 a 可以用 /action 实现类似的东西,这样我不必在任何地方都添加它......但也许我会这样做。

标签: java struts2 struts struts-config


【解决方案1】:

您似乎想在您的应用程序上创建类似 REST 的链接。您是否考虑过类似 REST 插件 http://struts.apache.org/2.1.6/docs/rest-plugin.html 的东西?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2018-06-12
    • 2012-01-15
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多