HTTP Status 404 - There is no Action mapped for namespace / and action name dwr.不知道为什么总是报这个错,是不是我的配置文件那里写错了?大家有没有遇到过呢?

解决方案 »

  1.   

    你为什么要访问这个地址呢?
    dwr的servlet配置到Web.xml中了吗?什么信息都没有,谁知道你有没有错?
      

  2.   

    把整个exception都贴出来看看。
      

  3.   

    警告: Could not find action or result
    There is no Action mapped for namespace / and action name dwr. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:177)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:458)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
      

  4.   

    在web.xml文件中的配置是:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    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_2_5.xsd">
      
      <filter>
       <filter-name>struts2</filter-name>
       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      </filter>
      
      <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>/*</url-pattern>
      </filter-mapping>
      
      <listener>
       <listener-class>
       org.springframework.web.context.ContextLoaderListener
       </listener-class>
      </listener>
      
      <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
        </init-param>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
      
      
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  5.   

    为了测试看看dwr配置成功了没有
      

  6.   

    你试试
    http://ip:port/dwr/engine.js并没有dwr这个Servlet或者Action。
      

  7.   

    但是在jsp中能用dwr但是通过哪种连接地址访问不了dwr所有的类的方法。
      

  8.   

    估计你没理解DWR是怎么回事儿,或者理解错了,或者,你的表述我没法理解。
      

  9.   

    呵呵 我是说 我在页面里面调用dwr可以使用,我通过http://localhost:8080/项目名称/dwr这个链接地址来查看所有在dwr.xml里面配置的任意类的方法就不行,我现在怀疑用了struts2.0后,在项目名称后面的dwr被当成一个action了,没有通过struts2.0的拦截器所以报的那个错,但是我不知道如何修改。你又遇到过这种情况吗?谢谢楼上的呀!
      

  10.   

    <filter-mapping> 
      <filter-name>struts2 </filter-name> 
      <url-pattern>/* </url-pattern> 
      </filter-mapping> <servlet-mapping> 
        <servlet-name>dwr-invoker </servlet-name> 
        <url-pattern>/dwr/* </url-pattern> 
      </servlet-mapping> 
      这两个冲突了吧
      

  11.   

    很明显exception里的显示是到了struts,而没有到dwr
      

  12.   

    在 struts.xml 中 <constant name="struts.action.extension" value="action" />

    其默认值是 action,, 除了 action 的后缀,无后缀也会被其拦截总觉得楼上几位朋友似乎都用的 struts 1 啊
      

  13.   

    这是因为你在地址栏中提交请求时:struts2的拦截器会默认在其后添加.action
    修改一下struts.xml如下:
    <!-- 该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。
        如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。-->
        <constant name="struts.action.extension" value="do"/> 
      

  14.   

    dwr位置文件中调用的接口,看看那这个借口的路径是否有误啊
      

  15.   

    下面是DWR在WEB.XML中的配置信息,应该是你配置没正确 <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
        </init-param>
      </servlet>  <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping>
      

  16.   

    没看见原来你那个配置没错
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    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_2_5.xsd">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    <!-- spring context listener -->
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext-*.xml</param-value>
    </context-param> <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>  <servlet>
        <servlet-name>dwr-invoker</servlet-name>
        <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
        <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
        </init-param>
      </servlet>  <servlet-mapping>
        <servlet-name>dwr-invoker</servlet-name>
        <url-pattern>/dwr/*</url-pattern>
      </servlet-mapping> <filter>
    <filter-name>encoding</filter-name>
    <filter-class>
    org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>hibernateFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping> <!-- struts2 filter -->
    <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>
      
    </web-app>
      

  17.   

    只需要修改struts.xml配置即可,因为默认情况下,struts2会截取一切请求,如在struts.xmlK中加入<constant name="struts.action.extension" value="do"/>即可。
    另外一种可能就是struts2和dwr版本匹配,这种方案我没有去解决
      

  18.   

    但是加了这句<constant name="struts.action.extension" value="do"/>,好像那些action又报错了,感觉一个得了另一个又不行了
      

  19.   

    我也遇到这个问题,跟楼主说的一模一样,在页面上能正常调用方法,但在查看时就是不行,好像就是struts2和dwr的路径冲突了,怎么办呀
      

  20.   

    从网上找了半天,结合自己的总结,有一个比较笨而费力的方法,在sturts.xml中添加这一行: 
    <constant name="struts.action.extension" value="action"></constant> 这样就能对dwr进行debug了,但是这样配置对struts2的使用又产生影响,所以在查看过dwr的页面后,再删掉这行,重新部署就可以了,这也是没办法呀,反正查看dwr只是对刚写完的方法测试用的嘛。
      

  21.   

    这个链接里有你需要的知识。http://sswh.iteye.com/blog/756922