如何启用struts2约定插件

如何启用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示例配置的信

这个问题似乎很愚蠢,因为我完全误解了文件。基本上,我只想运行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的哪个版本、您正在部署的库、配置中的内容等。