如何启用struts2约定插件

时间:2013-02-11 17:58:43

标签: struts2

这个问题似乎很愚蠢,因为我错误地理解了这个文件。基本上我只想根据这个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>

1 个答案:

答案 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来使用适当的工厂来构建与网址匹配的操作。