【发布时间】:2016-07-14 23:54:33
【问题描述】:
在Struts 2中,action的name属性可以是路径吗?我的意思是它可以是以下内容:
<action name="/api/method/call" ...>
是否有任何来源解释了 Struts 配置中的操作标记可以具有哪些属性。 Struts 似乎真的没有文档记录。
【问题讨论】:
标签: java web-applications configuration struts2 struts
在Struts 2中,action的name属性可以是路径吗?我的意思是它可以是以下内容:
<action name="/api/method/call" ...>
是否有任何来源解释了 Struts 配置中的操作标记可以具有哪些属性。 Struts 似乎真的没有文档记录。
【问题讨论】:
标签: java web-applications configuration struts2 struts
您可以在此部分查看文档Action Names。但是,由于前导斜线,它与您的不同。
带有斜线的动作名称
如果您的操作名称中有斜杠(例如,
<action name="admin/home" class="tutorial.Admin"/>) 你需要特别 允许通过struts.xml中的常量在您的操作名称中使用斜杠 通过指定<constant name = "struts.enable.SlashesInActionNames" value = "true"/>文件。请参阅 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。
【讨论】:
文档链接供您参考。
https://struts.apache.org/docs/home.html
您可以在动作名称中使用斜杠,但不建议这样做, https://stackoverflow.com/a/19114364/5086633
【讨论】: