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是无效的。

  • 相关阅读:
    DRF项目之视图获取路径参数
    DRF项目之层级关系
    DRF项目之序列化器和视图重写方法的区别
    DRF项目之自定义分页器
    DRF项目之实现用户密码加密保存
    DRF项目之通过业务逻辑选择数据集和序列化器
    DRF项目之自定义JWT认证响应数据
    PIP一次性导入所有环境和指定镜像源
    DRF项目之JWT认证方式的简介及使用
    DRF项目之解决浏览器同源策略问题
  • 原文地址:https://www.cnblogs.com/lihuiyy/p/2960204.html
Copyright © 2011-2022 走看看