没有动作映射 - Struts 2

时间:2014-05-07 15:34:29

标签: java maven struts2 action-mapping

下午好,

我意识到这个问题已被多次询问,但这些问题主要是由于struts.xml文件放在错误的位置或错误拼写路径名称的人造成的。

我尽可能地遵循Struts 2网站here中的教程,但不断收到以下错误:

HTTP Status 404 - There is no Action mapped for namespace [/] and action name [hello] associated with context path [/basic_struts].
  • 我使用Maven作为我选择的构建工具
  • 我的struts.xml文件位于WebContent文件夹的根目录中,WEB-INF\classes文件夹中的不是

以下是我的struts.xml文件的结构:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
        <!-- This minimal Struts 2 configuration file tells the framework that 
            if the URL ends in index.action to redirect the browser to index.jsp. -->
        <action name="index">
            <result>/index.jsp</result>
        </action>

        <action name="hello"
            class="com.me.actions.HelloWorldAction" method="execute">
            <result name="success">jsp/HelloWorld.jsp</result>
        </action>
</package>

我还将HelloWorld.jsp文件放在名为jsp的文件夹中,我在struts文件中指出了这一点。用于调用上述操作的索引文件代码如下所示:

<p>
    <a href="<s:url action='hello'/>">Hello World</a>
</p>

问题

1)我放置struts.xml文件是否正确? (注意 - 我的web.xml文件位于WEB-INF文件夹中),如果不是,应该放在哪里?

(注意 - 我读过它应该放在src/main/resources文件夹中但是在哪里?我会认为这是java资源的一部分,但为什么要把它放在那里?)

2)您是否需要在lib文件夹中包含任何jar或构建路径以使其工作?从网站上你要做的就是在Maven pom文件中包含一个依赖项 - 在我看来这样:

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.16</version>
    </dependency>

由于

更新

感谢Roman C的帮助。我的struts文件出错了。如果有其他人有这个问题,我建议你查看这个question,它有一个很好的截图来确定struts文件的位置 - 请记住把它称为struts.xml(小写)而不是大写。

1 个答案:

答案 0 :(得分:1)

看起来像是对错误的简要说明:struts.xml文件应该在Web应用程序类路径上。 src/main/resources对应于Maven项目结构,应作为源文件夹添加到您的Web项目中。构建时,它与其他源文件夹合并,这些文件夹被编译并与编译类一起放置到编译器输出的文件夹中。部署后,编译器输出文件夹复制到WEB-INF/classes。请参阅Maven site for getting started with web projects