转自:http://www.lvhongqiang.com/blog429.html

问题:

升级Struts2.5后使用DMI动态方法调用报错,method 找不到。

源码:

struts.xml
  1. <action name="json_*_*" class="{1}Action" method="{2}">
  2. <result name="success" type="json"></result>
  3. <result name="error" type="json"></result>
  4. <result name="input" type="json"></result>
  5. </action>

分析:

目前情况:
json_record_list.action访问不会报错。
json_record_query.action访问报错。
调用Action中list方法时并没有报错,随后调用query方法时报错,问题锁定方法名。改为随意字符串abcdeq之类方法名都会报错,就是说只有特定方法名才可以。所以怀疑struts某处有关于方法名的默认设置。百度后得知Struts2.5新增了allowed-methods配置,只有被允许的方法名才可以动态调用。

解决办法:

在配置文件struts.xml中添加:<global-allowed-methods>regex:.*</global-allowed-methods>

  1. <package name="exam" extends="json-default">
  2. <global-allowed-methods>regex:.*</global-allowed-methods>
  3. <action name="user" class="userAction">
  4. ...
  5. </action>
  6. </package>

或者在某一action内添加<allowed-methods>regex:.*</allowed-methods>

注解方式:

在 action 上使用 @AllowedMethods 注解

默认的设置:
  1. <global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
附:全局设置是增量而不是覆盖的,支持正则和直接匹配方法

转载于:https://www.cnblogs.com/lhq1/p/6231255.html

升级Struts2.5后使用DMI动态方法调用遇到问题相关推荐

  1. struts2学习 - action -3 动态方法调用 DMI

    Action执行的时候并不一定要执行execute方法 可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐)   配置文 ...

  2. struts2的动态方法调用(DMI)和通配符映射

    动态方法调用 1.Struts2默认关闭DMI功能,需要使用需要手动打开,配置常量 [html] view plaincopy struts.enable.DynamicMethodInvocatio ...

  3. Struts2学习---基本配置,action,动态方法调用,action接收参数

    首先我们先来直接配置,然后再来讲原理:  第一步:jar包的引入:  我们可以到struts2的官网上下载:  http://struts.apache.org/download.cgi#struts ...

  4. Struts2动态方法调用

    2019独角兽企业重金招聘Python工程师标准>>> 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Act ...

  5. struts2静态方法和动态方法调用

    1 jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...

  6. Struts2 动态方法调用(十三)

    附件中有完整的案例! 1.动态方法调用 在业务逻辑处理action中,可以包含一个或者多个逻辑处理方法. 例如:在jsp文件中的同一个form表单中 有多个用来提交的表单值的按钮,可当用户通过不通的按 ...

  7. Struts2使用!动态方法调用无效

    在Struts2的action配置中,可以使用method属性来实现方法的动态调用,除此之外还有一种方式可以实现方法的动态调用,那就是在url中 的action后跟!再跟指定的方法名,比如localh ...

  8. struts2的通配符和动态方法调用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC     &quo ...

  9. Struts2笔记——通配符和动态方法调用

     通配符映射 * 一个 Web应用可能有成百上千个 action 声明. 可以利用 struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系 * 通配符映射规则     > 若 ...

最新文章

  1. 智源论坛(第5期)活动报名 | 机器学习系列报告会(7月4日、10日)
  2. python3安装步骤mac-Mac安装Python3
  3. 实战SSM_O2O商铺_45【Redis缓存】配置Redis在Service层加入缓存
  4. 含类定义的完整python程序_Python——变量,运算,条件,循环
  5. 盒马鲜生颠覆传统生鲜市场的胜算几何?
  6. 程序从技术到管理:思维转变是关键
  7. 轻松搞定 Nginx 配置代码的神器!
  8. 1057. 数零壹(20)-PAT乙级真题
  9. Ubuntu 18.04下搭建单机Hadoop和Spark集群环境
  10. oracle讲表通过主键去重,数据库试题,数据库基础试题及答案
  11. tp5 生成二维码并与背景图合并
  12. HDU 6232 Confliction
  13. C语言中文网_java复习进度
  14. ME:环境DNA(eDNA)宏条形码技术正在转变我们考察动植物群落的方法
  15. 详细分析本机号码一键登录原理!建议收藏
  16. 什么时候,董明珠能成功卖给记者一部格力手机?
  17. spring tx:advice(转)
  18. 怎么把照片变年轻?这两个照片变年轻小妙招教给你
  19. 俄罗斯方块游戏系统-c语言版
  20. Elliptic Labs 与世界领先的笔记本电脑OEM签署首份企业软件许可合同

热门文章

  1. android 关闭软键盘失去焦点,Android - html输入在软键盘打开时失去焦点(ASP.net)...
  2. Spring Boot————Profile配置
  3. 笔记本超频会烧吗_笔记本电脑cpu超频是什么意思?超频会怎样啊?
  4. python数据拟合固定参数_如何将数据拟合到非理想二极管方程(隐式非线性函数)并检索参数 - python...
  5. 设备管理器android感叹号,设备管理器其他设备感叹号
  6. CBOW模型正向传播、矩阵乘积层实现
  7. sklearn朴素贝叶斯分类器_python机器学习:方法链和朴素贝叶斯分类器
  8. mysql保存时乱码了_MySQL保存中文乱码的原因和解决办法
  9. PyCharm 安装插件
  10. Redis HyperLogLog常用命令