Java Struts 2带有PrefixBasedActionMapper的动作映射

Java Struts 2带有PrefixBasedActionMapper的动作映射,java,struts2,struts,struts-config,Java,Struts2,Struts,Struts Config,我试图改变struts2中url的映射方式 我希望能够设置一个类似www.site.com/login.action的url,并使其看起来像www.site.com/action/login 我知道我可以使用struts.xml常量删除操作扩展 <constant name="struts.action.extension" value="" /> 我用以下内容更新了web.xml: <filter> <filter-name>struts2&l

我试图改变struts2中url的映射方式

我希望能够设置一个类似www.site.com/login.action的url,并使其看起来像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>

支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/行动/*
这给了我希望将所有/action/url路由到Struts的结果。问题是Struts没有意识到url的动作部分实际上是动作扩展…当然我也不希望Struts知道这一点。因此,在我所有的Struts.xml动作映射中,我必须在名称空间甚至动作名称中包含/action

我看过PrefixBasedActionMapper类,我想知道我是否在正确的轨道上完成了我试图做的事情…或者可能没有…甚至可能根本不可能


有人对此有所了解吗?

看起来您希望在应用程序上创建类似REST的链接。您考虑过REST插件吗?

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