Struts Hello world example : There is no Action mapped for namespace [/] and action name error
-
13-11-2019 - |
문제
i am absolute beginner to Struts2. I am tying to follow tutorials on struts web site. i followed this tutorial. i have some trouble with it. i created dynamic web project on eclipse. Then i followed the tutorial. However when i run the example i get the following error.
There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location]
i have the following directory structure
And my struts.xml file is
<?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>
thanks for your responses.
해결책
The struts.xml
configuration file needs to be on the classpath (as opposed to in WEB-INF
).
The linked tutorial assumes a Maven build and states the struts.xml
file should go in src/main/resources
, which will be included in the classpath in Maven builds. Since you're ignoring that part, you'll likely want to put it in the root of your source directory.
다른 팁
You have to create a classes/
folder under WEB-INF/
and put in your struts.xml
file!
Right click the project. Go to properties deployment build path and add all .jar files to /WEB-INF/lib.
Then you shouldn't get this error.
struts.xml should be located under directory: src/struts.xml..
And WEB-INF/web.xml you we need to configure the struts based on filter..
I got the same error and got solution looking at tomcat log when restarting : doctype were missing in struts.xml
so I added
<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">
now it works !
I solved the issue by adding default-action-ref tag, for example,
<default-action-ref name="home" />
after package tag
in struts.xml
<package name="user" namespace="/" extends="struts-default">
<default-action-ref name="upload" />
I had the same issue and I was facing it because of not mentioning the namespace correctly in struts.xml.
I added the following snippet in the web.xml :
<welcome-file>login.jsp</welcome-file>
and also making the namespace as "/" default... Hope it answers your query..
In my case I had to rename Struts.xml
---> struts.xml