如何启用struts2约定插件
这个问题似乎很愚蠢,因为我完全误解了文件。基本上,我只想运行hello world无操作示例,只需将hello.jsp文件添加到WEB-INF/content中,然后运行localhost:8080/test/hello,但是Struts一直显示异常java.lang.NoSuchMethodException:com.opensymphony.xwork2.ActionSupport.index() 所以我想知道在运行之前是否需要进行任何配置。我找不到任何关于hello world示例配置的信息 谁能告诉我正确的方法吗?谢谢 更新:这是项目树,没有行动,没有幻想如何启用struts2约定插件,struts2,Struts2,这个问题似乎很愚蠢,因为我完全误解了文件。基本上,我只想运行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>
org.apache.struts
struts2型芯
2.3.8
org.apache.struts
struts2 rest插件
2.3.8
org.apache.struts
struts2约定插件
2.3.8
org.apache.struts
struts2配置浏览器插件
2.3.8
org.mortbay.jetty
码头
6.1.26
您混合了Struts 2约定插件和Struts 2 REST插件,这就是Struts 2寻找名为index()的方法(REST的默认方法)的原因
删除REST插件-struts2 REST插件-
,一切都应按预期工作
如果您想将约定与REST混合使用,请参阅文档,例如,您可以使用struts.REST.namespace
来区分应用程序的REST部分和普通web应用程序部分
编辑
如果你想混合双方——一个普通的Web应用程序和休息端点——你可以考虑使用允许每个URL使用不同的映射器。另外,您应该使用
PrefixBasedActionProxyFactory
来使用适当的工厂来构造与url匹配的操作。您将Struts 2约定插件与Struts 2 REST插件混合在一起,这就是Struts 2寻找名为index()的方法(REST的默认方法)的原因
删除REST插件-struts2 REST插件-
,一切都应按预期工作
如果您想将约定与REST混合使用,请参阅文档,例如,您可以使用struts.REST.namespace
来区分应用程序的REST部分和普通web应用程序部分
编辑
如果你想混合双方——一个普通的Web应用程序和休息端点——你可以考虑使用允许每个URL使用不同的映射器。另外,您应该使用
PrefixBasedActionProxyFactory
来使用适当的工厂来构造与url匹配的操作。我们需要更多信息,如版本、具体部署的内容(主要是libs)等。通常,如果您有一个正常工作的struts2应用程序。。。那就是你有一个有效的行动。然后您只需要添加struts2-conventions-plugin-xxx.jar,其中xxx与struts2-core的版本相同。。。如果您使用的是maven struts2 core,那么它是插件的依赖项,所以您所需要做的就是添加插件。之后,不需要进行任何配置。创建文件/WEB-INF/content/hello.jsp,它应该是可访问的。某些配置可能导致它失败。。。尝试使用一个不存在的包,例如/WEB-INF/content/xyz/hello.jsp最后一个hello视图将使用localhost:8080/test/xyz/hello进行访问,假设您的应用程序名为test。仍然不知道S2的哪个版本,您正在部署哪些库,配置中有什么,等等。我们需要更多信息,比如版本,具体部署什么(主要是libs),等等。如果您有一个正常工作的struts2应用程序。。。那就是你有一个有效的行动。然后您只需要添加struts2-conventions-plugin-xxx.jar,其中xxx与struts2-core的版本相同。。。如果您使用的是maven struts2 core,那么它是插件的依赖项,所以您所需要做的就是添加插件。之后,不需要进行任何配置。创建文件/WEB-INF/content/hello.jsp,它应该是可访问的。某些配置可能导致它失败。。。尝试使用不存在的包,例如/WEB-INF/content/xyz/hello.jsp最后一个hello视图将使用localhost:8080/test/xyz/hello进行访问,假设您的应用程序名为test。仍然不知道S2的哪个版本、您正在部署的库、配置中的内容等。