Struts 2 - 从url中删除操作

时间:2013-06-18 04:59:53

标签: java struts2

我一直在搜索从Struts 2中的网址中删除.action后缀扩展名的方法。我已经浏览了类似代码的各种变体。例如:

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

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

但没有效果。我的网站一直重定向到/xyz.action,并在我指定网址/xyz时出现资源未找到的错误。我正在使用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。

2 个答案:

答案 0 :(得分:0)

尝试在struts.xml中进行更改,如下所示: 通过赋予价值&#34;无论什么&#34;而不是&#34;,&#34; ANS:

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

答案 1 :(得分:0)

您需要在 StrutsPrepareAndExecuteFilter 的过滤器映射 url-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>

(通常情况下会是<url-pattern>*.do</url-pattern><url-pattern>*.action</url-pattern>

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