Struts2 映射 save.action\param1 alue1\param2 alue2 到 action

问题描述 投票:0回答:1

我们在 Tomcat 9 上使用 Struts 6.2,并将所有

.action
扩展映射到操作,例如
save-user.action
正确映射到操作。

Web 应用程序也需要处理这个 URL:

save-user.action\name\joe\age\20\
。如您所见,参数是通过 URL 路径发送的。来电者不是浏览器。

有什么方法可以配置 Struts 来处理这个 URL 并将其映射到正确的操作吗?

struts2 action-mapping
1个回答
1
投票

我们正在使用convention-plugin,看来我们应该在struts filter之前获取

/my.action/param1/value1
url。将其更改为有效的
url/my.action?param1=value1
,然后让struts完成其余的工作。

自己动手也不容易,幸好在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>

© www.soinside.com 2019 - 2024. All rights reserved.