这个问题似乎很愚蠢,因为我错误地理解了这个文件。基本上我只想根据这个instruction运行hello-world无动作示例,只需将hello.jsp文件添加到 WEB-INF / content 然后运行 localhost:8080 / test / hello ,但Struts一直显示异常 java.lang.NoSuchMethodException:com.opensymphony.xwork2.ActionSupport.index( )
所以我想在运行之前需要完成任何配置。我找不到关于hello-world示例配置的任何事情。
有人能建议我正确吗?感谢
更新: 这里是项目树,没有动作,没有任何幻想。
├── pom.xml
└── src
└── main
├── resources
│ └── struts.xml
└── webapp
├── WEB-INF
│ ├── content
│ │ └── hello.jsp
│ └── web.xml
└── index.jsp
pom.xml中的依赖项
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-rest-plugin</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-config-browser-plugin</artifactId>
<version>2.3.8</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>
答案 0 :(得分:10)
你已经将Struts 2 Convention插件与Struts 2 REST插件混合了,这就是为什么Struts 2正在寻找名为index()的方法(REST的默认方法)。
删除REST插件 - struts2-rest-plugin
- 一切都应按预期工作。
如果您想将Convention与REST混合,请参阅文档,例如。您可以使用struts.rest.namespace
来区分应用程序的REST部分和普通的Web应用程序部分。
修改强>
如果你想混合双方 - 普通的网络应用程序和REST端点 - 你可以考虑使用PrefixBasedActionMapper允许每个网址使用不同的地图制作工具。另外,您应该使用PrefixBasedActionProxyFactory
来使用适当的工厂来构建与网址匹配的操作。