命名空间/动作名称hello没有映射的Action

package com.tutorialspoint.struts2; public class HelloWorldAction{ private String name; public String execute() throws Exception { return "success"; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 

的index.jsp

      Hello World   

Hello World From Struts2


在struts.xml

       /HelloWorld.jsp    

web.xml中

   Struts 2  index.jsp   struts2  org.apache.struts2.dispatcher.FilterDispatcher    struts2 /*   

的helloWorld.jsp

     Hello World   Hello World,    

这个代码我已经写了你好世界示例在Struts但我得到错误:

HTTP状态404 – 没有映射名称空间/操作名称索引的操作。

我是struts的新手,并尝试了解struts Mvc Framw的工作但我不知道在这里做错误在哪里错过这个请帮助我如何修复它

  1. 使用新filter

      struts2  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   

    而不是旧的

      struts2  org.apache.struts2.dispatcher.FilterDispatcher   

    除非您使用的是非常旧版本的Struts2(例如2.0)。

  2. 您的web.xml部署描述符搞砸了:您说它是3.0,然后链接2.5 xmlns:web。

    如果你有一个Servlet 3.0容器(Java EE 6)使用:

      

    如果你有一个Servlet 2.5容器(Java EE 5)使用:

      
  3. 在包声明中指定命名空间,因此当您添加新包时,您将不会遇到问题:

      
  4. 如果是execute() ,则无需在Action config中指定方法,如果是"success"则无需指定结果:

      /HelloWorld.jsp  
  5. 如果可能,最好使用HTML5 DOCTYPE和UTF-8 CharSet。

在您提供的Struts.xml

将其更改为后尝试

我希望这个答案能解决问题……

清理您的应用程序目录,但最重要的是,我发现您缺少命名空间。

样品包条目enter code here

包名称是您提供的逻辑名称,但命名空间必须为“/”,或者如果有任何其他上下文,则该名称

对于仍然遇到这些问题的人,请在此处查看我的答案。

经过近一个小时的挣扎,这对我有所帮助。 我一步一步地按照教程,仍然得到错误。

如果有帮助,请告诉我。 快乐的编码:-)