【问题标题】:In Struts 2 Can Name Attribute of Action Be a Path?在Struts 2中,动作的名称属性可以是路径吗?
【发布时间】:2016-07-14 23:54:33
【问题描述】:

在Struts 2中,action的name属性可以是路径吗?我的意思是它可以是以下内容:

<action name="/api/method/call" ...>

是否有任何来源解释了 Struts 配置中的操作标记可以具有哪些属性。 Struts 似乎真的没有文档记录。

【问题讨论】:

    标签: java web-applications configuration struts2 struts


    【解决方案1】:

    您可以在此部分查看文档Action Names。但是,由于前导斜线,它与您的不同。

    带有斜线的动作名称

    如果您的操作名称中有斜杠(例如,
    &lt;action name="admin/home" class="tutorial.Admin"/&gt; ) 你需要特别 允许通过 struts.xml 中的常量在您的操作名称中使用斜杠 通过指定
    &lt;constant name = "struts.enable.SlashesInActionNames" value = "true"/&gt; 文件。请参阅 JIRA 问题WW-1383 进行讨论,因为有 将此属性设置为 true 的副作用。


    您可以删除前导斜杠并查看它是否正常工作或使用带有Action Annotation 的约定插件。

    动作注解

    Convention 插件允许操作类更改 URL 它们使用@Action 注释映射到。这个注解可以 也可以在 @Actions 注释中使用以允许多个 URL 映射到单个动作类。此注释必须定义在 像这样的操作方法:

    public class HelloWorld extends ActionSupport {
      @Action("/different/url")
      public String execute() {
        return SUCCESS;
      }
    }
    

    我们的动作类现在将映射到 URL /different/url 而不是 /hello-world。如果没有指定@Result(见下一节),那么 操作的命名空间将用作结果的路径,在 我们的最后一个例子是/WEB-INF/content/different/url.jsp


    【讨论】:

      【解决方案2】:

      文档链接供您参考。

      https://struts.apache.org/docs/home.html
      

      您可以在动作名称中使用斜杠,但不建议这样做, https://stackoverflow.com/a/19114364/5086633

      【讨论】:

        猜你喜欢
        • 2014-12-22
        • 1970-01-01
        • 2012-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-03
        相关资源
        最近更新 更多