【问题标题】:Multiple URL extensions, individual action/controller mapping in Struts 2Struts 2 中的多个 URL 扩展、单个动作/控制器映射
【发布时间】:2014-10-29 10:20:29
【问题描述】:

在 Struts2 中是否可以将 URL/动作映射到不同的扩展?例如如果我的应用托管为

http://stack.com/myapp 

我可以有 2 个网址吗

http://stack.com/myapp/act.action 

http://stack.com/myapp/donoact.do

没有/act.do/donoact.action 的映射。即一个 URL 应该在单个扩展上可用。

使用<constant name="struts.action.extension" value="action,do" /> 可以在两个扩展程序上使用 URL。

【问题讨论】:

  • 感谢 Aleksandr 的及时回复。但以上并没有解决我的问题。实际上,我需要在 *.action URL 上应用安全和其他过滤器并绕过 *.do。如果我使用“action.extension”,两个扩展都可以使用常量 URL。我不想要那个
  • 所以你想要一些带有 .do 的动作和一些带有 .action 的动作?命名空间通常用于安全约束和过滤器。
  • 你为什么要这样做?哪个是您真正的用例?您试图通过使用最有可能错误的工具(扩展名)来做出哪些区分? 小心the XY Problem
  • 我同意安德里亚。感谢 Aleksandr,命名空间似乎是解决方案的更好方法。我已经向我的客户提出了解决方案,让我们看看他们同意什么。

标签: java struts2 xml-configuration


【解决方案1】:

您可以按名称和命名空间映射操作,但不能按扩展名映射。当 Struts2 默认 ActionMapper 从 URL 中确定一个动作名称时,它会剥离扩展名并使用 ActionMapping 的单独属性放置名称空间和动作名称。

最近,此操作映射用于查找用于构建和调用操作实例的操作配置。

在 Struts 文档网站上查看有关 action configuration 的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2018-02-19
    • 2012-07-07
    相关资源
    最近更新 更多