在哪里放置 struts.xml 文件以避免在 Struts 2 中出现“No action returned”错误?

问题描述 投票:0回答:1

我意识到,这个问题已被问过多次,但这些问题主要是由于将

struts.xml
文件放置在不正确的位置,或者拼写错误的路径名等引起的。

我已尽我所能遵循 Struts 2 网站这里的教程,但我不断收到以下错误:

HTTP 状态 404 - 没有映射与上下文路径 [/basic_struts] 关联的命名空间 [/] 和操作名称 [hello] 的操作。

  • 我使用 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.xml
文件中指出了这一点。
index
文件代码应该调用上述操作,如下所示:

<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.xml
    文件中包含依赖项 - 在我的文件中,它看起来像这样:

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

更新:

感谢Roman C 的帮助。我的

struts.xml
文件位于错误的位置。如果其他人也遇到这个问题,我建议您查看这个 question,其中有一个很好的屏幕截图,说明了
struts.xml
文件的位置 - 请记住将其称为
struts.xml
(小写)而不是大写。

java maven struts2 xml-configuration action-mapping
1个回答
1
投票

看起来像是错误的简短解释:

struts.xml
文件应该位于 Web 应用程序类路径上。
src/main/resources
对应于 Maven 项目结构,应作为源文件夹添加到您的 Web 项目中。构建后,它会与其他已编译的源文件夹合并,并与已编译的类一起放置到编译器输出的文件夹中。部署时,将编译器输出文件夹复制到
WEB-INF/classes
。请参阅 Maven 站点以开始 Web 项目

© www.soinside.com 2019 - 2024. All rights reserved.