关于struts2升级2.5版本后不能用通配符的解决方法

最近在做一个接口优化,因为以前的版本是用的s2si框架,所以经理要求也用sturts2做,要用最新的架包做,于是乎,我下载了struts2的2.5.8版本的,然后开始做,写了一个方法测试的时候,没有问题,但是该用通配符测试后,一直提示“this is no action for...”这句话,然后一直找原因,最后终于找到结果:2.5版本后为了安全起见,struts2不再默认使用通配符, 一顿 好气啊。

 最后搜索了一遍: 现在把结果给大家写出来,让大家少走弯路;

修改步骤:

1、修改struts.xml的头部:

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>

注意我加红的数字,一定要改

第二步:配置允许零配置的方法allomethod

第一个方式是在《package》这个包中添加全局的allomethod方式

 <package name="app" extends="struts-default" namespace="/"> 
    <!-- 允许全局零配置 -->
    <global-allowed-methods>regex:.*</global-allowed-methods>
     <action name="user_*" class="com.jmt.webapp.appaction.user.PhoneUserAction" method="{1}">    		 	
   			
   			</action>
   		
    </package>

注意加红部分;

第二种方式:针对action,在 action 块中添加


<allowed-methods>regex:.*</allowed-methods>
需要注意的是:添加这个后,不能再继承actionSupport,否者会报错:java.lang.NoSuchMethodException: $Proxy5.list()
搜索这么多,感觉下面这个回答的更清楚:

http://ask.csdn.net/questions/260958

有想看的,可以去看下。


展开阅读全文

没有更多推荐了,返回首页