【问题标题】:Struts 2 - Removing action from urlStruts 2 - 从 url 中删除操作
【发布时间】:2013-06-18 04:59:52
【问题描述】:

我一直在寻找从 Struts 2 中的 url 中删除 .action 后缀扩展名的方法。我经历了类似代码的各种变体。例如:

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

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

但没有效果。我的网站一直重定向到/xyz.action,当我将url 指定为/xyz 时,会出现Resource not Found 错误。我正在使用Struts 2.2.3。有人可以告诉我该怎么做才能实现这一目标吗?问题是否有可能与 web.xml 而不是 struts.xml 有关?

web.xml

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

还有各种其他过滤器,如会话、电子邮件、事务等和 servlet。

【问题讨论】:

  • 您可以发布 web.xml,但如何创建 url?您是否使用任何其他配置文件?
  • 请出示您的 web.xml

标签: java struts2


【解决方案1】:

StrutsPrepareAndExecuteFilter需要修改filter-mappingurl-pattern >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>/*</url-pattern>
</filter-mapping>

(虽然通常它会像 &lt;url-pattern&gt;*.do&lt;/url-pattern&gt;&lt;url-pattern&gt;*.action&lt;/url-pattern&gt;

文档:http://struts.apache.org/release/2.3.x/docs/webxml.html

【讨论】:

  • 嗨,安德里亚!我正在使用 FilterDispatcher。我不知道 StrutsPrepareAndExecuteFilter 以及它会随着 URL 的变化带来什么变化。洞察力会非常有帮助。
  • 顺便说一句,您使用的不是 Struts2 FilterDispatcher,而是外部过滤器......为什么使用外部过滤器而不是 Struts2 提供的过滤器(我的回答中提到的那个)?
  • 好的,所以我将尝试使用 StrutsPrepareAndExecuteFilter 而不是 FilterDispatcher。另外你能告诉我我在 方面的其他设置是否正确?!我应该使用正则表达式为 URLRewrite 添加一个 吗?
  • 好吧,我试过了,它奏效了......但是正在发生的反问题是我失去了与页面相关的样式。
【解决方案2】:

尝试在struts.xml中更改如下: 通过给出值“whatever”而不是“,” 答:

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

【讨论】:

  • 哇,我从来不知道 Struts 这么先进!
猜你喜欢
  • 2012-02-29
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 2012-01-15
  • 2013-05-15
  • 2013-02-18
  • 1970-01-01
  • 2020-09-09
相关资源
最近更新 更多