【问题标题】:Struts Hello world example : There is no Action mapped for namespace [/] and action name errorStruts Hello world 示例:没有为命名空间 [/] 映射的操作和操作名称错误
【发布时间】:2012-01-24 17:50:55
【问题描述】:

我是 Struts2 的绝对初学者。我正在关注 struts 网站上的教程。我关注了this tutorial。我有一些麻烦。我在 Eclipse 上创建了动态 Web 项目。然后我按照教程。但是,当我运行示例时,出现以下错误。

There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location]

我有以下目录结构

而我的 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="basicstruts2" extends="struts-default" namespace="/">

  <action name="index">
    <result>/index.jsp</result>
  </action>

  <action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
    <result name="SUCCESS">/HelloWorld.jsp</result>
  </action>

</package>

</struts>

感谢您的回复。

【问题讨论】:

  • 我试图把它放在代码块中,但我做不到。现在,没关系,我想。

标签: struts2 struts2-namespace action-mapping


【解决方案1】:

struts.xml 配置文件需要在类路径中(而不是在 WEB-INF 中)。

链接的教程假定一个 Maven 构建,并声明 struts.xml 文件应该进入 src/main/resources,它将包含在 Maven 构建的类路径中。由于您忽略了该部分,因此您可能希望将其放在源目录的根目录中。

【讨论】:

  • 非常感谢。这解决了这个问题。但是,我收到另一个错误“没有为操作和结果成功定义结果”有什么想法吗?
  • @erencan 是的;您的结果名称是“SUCCESS”,但 Action.SUCCESS 是字符串 "success"(小写)。这是一个猜测,因为我不知道你的行为是什么样的。此外,"execute" 是默认方法,不需要指定。 (如果您不想明确定义,“success”是默认结果名称。)
【解决方案2】:

您必须在WEB-INF/ 下创建一个classes/ 文件夹并放入您的struts.xml 文件中!

【讨论】:

    【解决方案3】:

    右键单击该项目。转到属性部署构建路径并将所有 .jar 文件添加到 /WEB-INF/lib。
    那么您应该不会收到此错误。

    struts.xml 应该位于目录下:src/struts.xml..

    还有WEB-INF/web.xml你我们需要配置基于filter的struts..

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误并在重新启动时查看了 tomcat 日志的解决方案: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">
      

      现在可以了!

      【讨论】:

        【解决方案5】:

        我通过添加default-action-ref标签解决了这个问题,例如,

        <default-action-ref name="home" />
        

        在包标签之后

        在 struts.xml 中

        <package name="user" namespace="/" extends="struts-default">
        
        <default-action-ref name="upload" />
        

        【讨论】:

          【解决方案6】:

          我遇到了同样的问题,因为没有在 struts.xml 中正确提及命名空间。

          我在 web.xml 中添加了以下 sn-p :

          <welcome-file>login.jsp</welcome-file>
          

          并且还将命名空间设置为“/”默认值... 希望它能回答你的问题..

          【讨论】:

            【解决方案7】:

            就我而言,我不得不重命名Struts.xml ---> struts.xml

            【讨论】:

              猜你喜欢
              • 2016-01-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-06-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-11-01
              相关资源
              最近更新 更多