我们在 Tomcat 9 上使用 Struts 6.2,并将所有
.action
扩展映射到操作,例如 save-user.action
正确映射到操作。
Web 应用程序也需要处理这个 URL:
save-user.action\name\joe\age\20\
。如您所见,参数是通过 URL 路径发送的。来电者不是浏览器。
有什么方法可以配置 Struts 来处理这个 URL 并将其映射到正确的操作吗?
我们正在使用convention-plugin,看来我们应该在struts filter之前获取
url。将其更改为有效的/my.action/param1/value1
,然后让struts完成其余的工作。url/my.action?param1=value1
自己动手也不容易,幸好在struts filter前面有使用urlrewrite filter的解决方法。见 为什么 URL 重写在 Struts 2 中不起作用:
如果在 Web 应用程序部署描述符中将 Tuckey URL 重写 过滤器放在 Struts2 过滤器之前,您就可以重写任何 URL。使用本指南:Tuckey URLRewrite How-To.
然后你添加一个规则来重写类似这样的 URL:
<rule match-type="regex">
<from>/my.action/param1/(\w+)</from>
<to>/my.action?param1=$1</to>
</rule>