zoukankan      html  css  js  c++  java
  • struts2 dwr There is no Action mapped for action ... 原因及解决方案

    struts2配置时,在web.xml中的配置如下:

    1   <filter>
    2       <filter-name>struts2</filter-name>
    3       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    4   </filter>
    5   <filter-mapping>
    6       <filter-name>struts2</filter-name>
    7       <url-pattern>/*</url-pattern>
    8   </filter-mapping>

    dwr 在 web.xml 中的配置如下:

     1   <servlet>
     2       <servlet-name>dwr-invoker</servlet-name>
     3       <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
     4       <init-param>
     5           <param-name>debug</param-name>
     6           <param-value>true</param-value>
     7       </init-param>
     8   </servlet>
     9   <servlet-mapping>
    10       <servlet-name>dwr-invoker</servlet-name>
    11       <url-pattern>/dwr/*</url-pattern>
    12   </servlet-mapping>

    struts2 使用 /* 作为 url-pattern,而且在struts机制中,只要请求路径中无后缀名或者后缀名为 .action ,它就当 action 来处理。所以当配置了dwr之后,在测试页中,本来点击类之后应该显示当前系统中对外暴露的JS方法的列表,却显示了There is no Action mapped for action... 类似的信息,就是因为点击了类名链接后,路径中没有了后缀名。解决方法有两个:
    (1)在Struts.properties中定义:
      struts.action.extension = action

      因为Struts2缺省配置是:
      struts.action.extension = action,(注意后面有个逗号)

    (2)在Struts.properties中设置:
      struts.action.excludePattern = /dwr.*,/webEditor.*(注意,这儿是正则表达式,不是URL匹配模式,所以要写/dwr.*而不是/dwr/*)
      这种写法应配置StrutsPrepareAndExecuteFilter,配置FilterDispatcher是无效的。

  • 相关阅读:
    usb驱动开发6之端点描述符
    usb驱动开发5之总线设备与接口
    usb驱动开发4之总线设备驱动模型
    usb驱动开发3之先看core
    usb驱动开发2之代码地图
    usb驱动开发1之学习准备
    javascript限制上传文件大小
    google Chrome打开多个网站时等待可用的套接字,怎么加大连接数量提升速度
    sql将一张表的字段赋值给另一张表
    百度搜索网址参数的含义
  • 原文地址:https://www.cnblogs.com/lihuiyy/p/2960204.html
Copyright © 2011-2022 走看看