eclipse – 没有映射名称空间[/]的动作和与上下文路径[/ struts]相关联的动作名称[]

我已经查看了stackoverflow上所有类似的Q,但它没有帮助,抱歉.我与他们所有人的主要区别在于我在错误消息中获得了EMPTY操作名称.谷歌搜索没有帮助:(
        希望有人可以提示在哪里寻找问题的根源.谢谢

信息:

    Stacktraces
    There is no Action mapped for namespace [/] and action name [] associated with context path [/struts]. - [unknown location] 
        com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
        org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
        org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
        com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58
    ..................

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="default" namespace="/*" extends="struts-default">
            <action name="login"
                class="training.struts.action.LoginAction">
                <result>login.jsp</result>
            </action>
        </package>
        </struts>

web.xml中:

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5">

        <display-name>Struts Lab</display-name>

        <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>

        <!-- Spring Config -->
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                    /WEB-INF/springServlet/appServlet/mvc-servlet.xml,
                    /WEB-INF/db/db-cfg.xml,
                    /WEB-INF/springServlet/application-security.xml
            </param-value>
        </context-param>

        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>

        <servlet>
            <servlet-name>mvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>/WEB-INF/springServlet/appServlet/mvc-servlet.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>mvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

        <!-- Spring Security -->
        <filter>
            <filter-name>springSecurityFilterChain</filter-name>
            <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
        </filter>

        <filter-mapping>
            <filter-name>springSecurityFilterChain</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

        <!-- *** -->
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>

        </web-app>

好..图像是不可能的,所以项目结构是:

src/main/java
----+training.struts.action.LoginAction.java
src/main/webapp
----+WEB-INF
--------+classes
-----------+struts.xml
--------+db
-----------+db-cfg.xml
--------+springServlet
-----------+appServlet
---------------+mvc-servlet.xml
-----------+application-security.xml
--------+index.jsp
--------+login.jsp
--------+web.xml

更新:
如此悲伤是愚蠢=(
我已经将我的login.jsp从WEB-INF移动到webapp root,这解决了问题.

UPDATE2:
我做了一些调查:
如果我从web.xml中删除“welcome-file-list”块,容器将在webapp root中查找“index.jsp”,以显示应用程序运行的第一个视图.如果我删除“index.jsp”,那么我将得到相同的异常消息:
没有针对命名空间[/]映射的Action和与上下文路径[/ struts]关联的操作名称[]

因此,在我看来,如果您在错误消息中有空操作名称,并且struts的xml设置正确,则第一步应该是启动JSP可用性检查.

干杯,伙计们.

最佳答案
将以下空白操作添加到“/”包命名空间中的struts.xml文件中,当您只尝试访问您的URL(如appid.app.com)时它将显示index.html,并且它不会显示错误.通常它会添加一个空白操作,应用程序引擎会将空白操作重定向到您的欢迎文件.

    <action name="" class="com.candi.actions.Dashboard" method="noAction">
        <result name="success">index.jsp</result>
    </action>

转载注明原文:eclipse – 没有映射名称空间[/]的动作和与上下文路径[/ struts]相关联的动作名称[] - 代码日志