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

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

问题:

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

源码:

struts.xml
        <action name="json_*_*" class="{1}Action" method="{2}">
            <result name="success" type="json"></result>
            <result name="error" type="json"></result>
            <result name="input" type="json"></result>
        </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>

<package name="exam" extends="json-default">

    <global-allowed-methods>regex:.*</global-allowed-methods>

    <action name="user" class="userAction">
            ...
    </action>
</package>

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

注解方式:

在 action 上使用 @AllowedMethods 注解

默认的设置:
<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
附:全局设置是增量而不是覆盖的,支持正则和直接匹配方法
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值