在使用struts框架时经常会使用到通配符调用方法,如下:
<package name="test" namespace="/" extends="struts-default">
<!-- 配置Action -->
<actionname="user_*" class="userAction" method="{1}">
<result name="success">/WEB-INF/jsp/login.jsp</result>
</action>
</package>
其中的action name=”user_*”中*这个符号代表的值会传入method=“{1}”中,并对应action类的一个方法名,这样就能很大程度地减少配置文档中action的数目。
但是自己在学习的过程中碰到了无法通过此方式访问的问题。相应的错误如下:
Message:There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/test].
于是乎开始检查自己的访问路径、产看配置文件、查看对应Action中方法的返回值,然而并没有找到错误点。
然后在开始询问度娘 emmmmm
在翻阅了很多文章之后,找到了和我一样碰壁的同学,原来是在使用Struts2中的版本的问题,我们使用的是Struts2 2.5的版本,此版本在使用通配符调用方法时,内部会验证是否允许访问该方法,所以要在action里面的配置中加上
才能够使用
<allowed-methods>方法名1,方法名2…</allowed-methods>代码
当然还有一种解决方法就是使用2.3的版本 在使用2.3的版本,按照正常的配置来就可以进行访问了…