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

15,800

Because /TestStruts is a context path at which deployed your application. It has the same path as namespace in your package. Try

http://localhost:8080/TestStruts/TestStruts/test.action

When URls is rendering from the struts tags it's trying to find a corresponding action configuration. If there's no config found the warning is issued.

Share:
15,800
Tiny
Author by

Tiny

Just an orphan kid and have no more to say. Three things in general, cannot be avoided (at least I can never) Mother Mother-tongue Mother-land. They are always unique. I'm a family-less boy. My family was hunted leaving me all alone when my house targeted and deliberately set on a fire by a mob during a nonsense communal riot but I was survived by a rescue team with the help of firemen. As a survival, I didn't know whether it was my fortune or misfortune but when I recovered, the rescue team came to my home, one day. One of the members gave me a piece of paper in my hand in which the following text was written. lifeisnowhere. He asked me to read it carefully and I could hardly interpret the text as Life is now here, instead of Life is nowhere. All of them gave me a cute smile and went away and I decided to live peacefully and hopefully on their saying from then onwards and very soon. Because of this tragedy, I'm alone couldn't join a school but a curiosity to learn something made me a self-learner. I'm indeed a self-learner, so I'm likely not able to answer any questions on this site right now. In the field of computer science, my self-study mainly includes, QBASIC, C, C++, C#, VB, Java, JavaScript, PHP and a little about ASP.NET. Oracle, MySQL and MSSQL-Server with DBMS. and other theoretical subjects. I'm currently dealing with - Android and Java EE including Servlet, JSP-JSTL/EL (with Spring and Struts with ORM models JPA/Hibernate) and JSF.

Updated on June 15, 2022

Comments

  • Tiny
    Tiny almost 2 years

    I'm trying my first application on struts 2.3.16 in NetBeans 7.2.1. It shows the following error on entering a URL - http://localhost:8080/TestStruts/Test.action (There is a Test.jsp page).

    WARNING: Could not find action or result: /TestStruts/Test.action
    There is no Action mapped for namespace [/] and action name [Test] associated with context path [/TestStruts]. - [unknown location]
        at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
        at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
        at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
        at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
        at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
        at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1822)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
    

    The Test.jsp page:

    <s:form namespace="/TestStruts" action="test">
        <table border="0" class="">
                <tr>
    
                    <td>
                        <s:textfield id="name" name="name" label="Enter your name"/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <s:textfield id="email" name="email" label="Enter your email"/>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td><s:submit value="Submit"/></td>
                </tr>
        </table>            
    
    </s:form>
    

    The action class:

    package actions;
    import com.opensymphony.xwork2.ActionSupport;
    
    public final class TestAction extends ActionSupport
    {
        private static final String SUCCESS = "success";
        private String name;
        private String email;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String execute() throws Exception
        {
            System.out.println("name = "+name);
            System.out.println("email = "+email);
            return SUCCESS;
        }
    }
    

    The strtus.xml file:

    <?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.enable.DynamicMethodInvocation" value="false" />
        <constant name="struts.devMode" value="true" />
        <constant name="struts.custom.i18n.resources" value="myapp" />
    
        <package name="test" namespace="/TestStruts" extends="struts-default">
            <action name="test" class="actions.TestAction" method="execute">
                <result name="success">/Test.jsp</result>
            </action>
        </package>
    
    </struts>
    

    The web.xml file:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/applicationContext.xml
            </param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    

    In addition to jar files of Spring, I have added the following jar files to the classpath.

    • commons-beanutils-1.8.0.jar
    • commons-chain-1.2.jar
    • commons-collections-3.1.jar
    • commons-digester-2.0.jar
    • commons-fileupload-1.3.jar
    • commons-io-2.2.jar
    • commons-lang3-3.1.jar
    • commons-lang-2.4.jar
    • commons-logging-1.1.3.jar
    • commons-logging-api-1.1.jar
    • commons-validator-1.3.1.jar
    • freemarker-2.3.19.jar
    • javassist-3.11.0.GA.jar
    • ognl-3.0.6.jar
    • struts2-core-2.3.16.jar
    • struts2-spring-plugin-2.3.16.jar
    • xwork-core-2.3.16.jar

    When the URL is changed to .jsp from .action like http://localhost:8080/TestStruts/Test.jsp, it shows the following warnings.

    Dec 22, 2013 9:00:44 PM org.apache.struts2.components.ServletUrlRenderer warn
    WARNING: No configuration found for the specified action: 'test' in namespace: '/TestStruts'. Form action defaulting to 'action' attribute's literal value.
    Dec 22, 2013 9:00:45 PM org.apache.struts2.components.ServletUrlRenderer warn
    WARNING: No configuration found for the specified action: 'test' in namespace: '/TestStruts'. Form action defaulting to 'action' attribute's literal value.
    

    What am I missing?