命名空间/动作名称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的工作但我不知道在这里做错误在哪里错过这个请帮助我如何修复它
-
使用新filter
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 而不是旧的
struts2 org.apache.struts2.dispatcher.FilterDispatcher 除非您使用的是非常旧版本的Struts2(例如2.0)。
-
您的web.xml部署描述符搞砸了:您说它是3.0,然后链接2.5 xmlns:web。
如果你有一个Servlet 3.0容器(Java EE 6)使用:
如果你有一个Servlet 2.5容器(Java EE 5)使用:
-
在包声明中指定命名空间,因此当您添加新包时,您将不会遇到问题:
-
如果是
execute()
,则无需在Action config中指定方法,如果是"success"
则无需指定结果:/HelloWorld.jsp -
如果可能,最好使用HTML5 DOCTYPE和UTF-8 CharSet。
在您提供的Struts.xml
将其更改为后尝试
我希望这个答案能解决问题……
清理您的应用程序目录,但最重要的是,我发现您缺少命名空间。
样品包条目enter code here
包名称是您提供的逻辑名称,但命名空间必须为“/”,或者如果有任何其他上下文,则该名称
对于仍然遇到这些问题的人,请在此处查看我的答案。
经过近一个小时的挣扎,这对我有所帮助。 我一步一步地按照教程,仍然得到错误。
如果有帮助,请告诉我。 快乐的编码:-)