1

这个问题似乎很愚蠢,因为我正确地误解了该文件。基本上我只想根据这个指令运行 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>
4

1 回答 1

10

您已经将 Struts 2 Convention 插件与 Struts 2 REST 插件混合在一起,这就是 Struts 2 寻找名为 index() 的方法(REST 的默认方法)的原因。

删除 REST 插件 - struts2-rest-plugin- 一切都应该按预期工作。

如果您想将约定与 REST 混合,请参阅文档,例如。您可以struts.rest.namespace用来区分应用程序的 REST 部分和普通的 Web 应用程序部分。

编辑

如果你想混合使用双方——一个普通的 web 应用程序和 REST 端点——你可以考虑使用PrefixBasedActionMapper,它允许每个 url 使用不同的映射器。另外,您应该使用PrefixBasedActionProxyFactory适当的工厂来构造与 url 匹配的操作。

于 2013-02-12T07:50:16.750 回答