【发布时间】: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